Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2010 15:42:19

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

Я менял пермишны непосредственно в кодах Container, Folder, BTreeContainer на Zope.Public. Ошибка всеравно остаётся. Да и непонятно, причём тут пермишны, если ошибка есть даже у менеджера, у которого полные права.



Офлайн

#2 Сен. 23, 2010 15:45:45

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

1. Никак не пойму откуда взялся метод objectValues. Смотрел в исходниках компонентов - его там нет.

2. У вашего контейнера нет никаких обьектов внутри и все что вы от него можете получить - это значения полей из вашей схемы (name, image).

Попробуйте написать:

<span tal:content="context/name" />
Должно работать…



Офлайн

#3 Сен. 23, 2010 15:49:27

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

context/name работает.
Сам искал в исходниках и не нашёл. Но ведь в оффициальной документации в руководстве есть примеры!
Даже если не брать в расчёт objectValues, то хотя бы контент-тип то можно получить
context/meta_type…
Да и обычно если атрибута нет вообще, появляется AttributeError, а тут ForbiddenAttribute (запрещённый атрибут), что действительно наводит на мысль о проблемах с разрешениями.



Офлайн

#4 Сен. 23, 2010 15:54:18

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

в классе вида пишу метод
def getMetaType(self):
return self.context.meta_type
вызываю в шаблоне
<span tal:content=“view/getMetaType”/>
и та же самая ошибка



Офлайн

#5 Сен. 23, 2010 15:55:47

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

AttributeError не выдается т.к. zope сначала проверяет права доступа на аттрибут (не зная существует он или нет) а потом уже пробует к нему достучатся. Есле есть права и нет такого атрибута - вот тогда AttributeError.



Офлайн

#6 Сен. 23, 2010 15:58:04

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

Атрибута meta_type у BTreeContainer нет и у вашего обьекта тоже, поэтому и ошибка.



Офлайн

#7 Сен. 23, 2010 15:59:39

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

Ну попробуйте в виде сделать

from zope.security.proxy import removeSecurityProxy
....
self.context = removeSecurityProxy(context)
Будет ли ошибка выскакивать.



Офлайн

#8 Сен. 23, 2010 16:02:58

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

Sleepwalker
Атрибута meta_type у BTreeContainer нет и у вашего обьекта тоже, поэтому и ошибка.
Точно, вы абсолютно правы. Только что проверил.
т.е. тут 2 варианта:
1) либо атрибут (к примеру, meta_type) существует, но права не выданы
2) либо атрибута вообще не существует



Отредактировано (Сен. 23, 2010 16:04:30)

Офлайн

#9 Сен. 23, 2010 16:09:49

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

Раскопал-таки.
meta_type - это атрибут для одного из способов поиска объектов в Zope2, а в Zope3 его нет, так как незачем. Нашел тут.



Офлайн

#10 Сен. 23, 2010 16:09:59

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB TAL.. Что сделать, чтоб хоть что-то работало?

    def getMetaType(self):
self.context = removeSecurityProxy(context)
return self.context.meta_type
AttributeError: ‘Section’ object has no attribute ‘meta_type’



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version