Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2010 10:53:18

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

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

90% примеров из документации к BB не работает.

Банально <span tal:content="python: context.objectValues()“ />
приводит к
ForbiddenAttribute: ('objectValues', <intershop.content.section.section.Section object at 0x0337E7F0>)

<span tal:content=”template/title" />
приводит к
LocationError: (<zope.browserpage.viewpagetemplatefile.ViewPageTemplateFile object at 0x03233830>, ‘title’)

Подскажите, кто знает, как это исправить.
Может какого-то наймспейса не хватает? (тогда не понятно, почему вообще тал и метал работают)



Отредактировано (Сен. 23, 2010 10:57:05)

Офлайн

#2 Сен. 23, 2010 11:03:58

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

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

LightOfMooN
ForbiddenAttribute: ('objectValues', <intershop.content.section.section.Section object at 0x0337E7F0>)
Это значит, что не хватает прав на интерфейс, который содержит атрибут objectValues
То есть примерно так:
<class class = ".section.Section">
...
<require
permission = "zope.Public"
interface = "zope.container.interfaces.IReadContainer"
/>
...
</class>



Офлайн

#3 Сен. 23, 2010 11:17:44

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

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

почему он считает его атрибутом, если это метод?
там же стоит python:

пишу в классе вида:

    def getNavTree(self):
list = []
for sec in self.context.objectValues(['Section']):
list.append(sec)
return list
вызываю в шаблоне, та же ошибка.

По поводу прав:
Проверял как от анонима, так и от админа
+
<grantAll role=“zope.Anonymous” />

Попробовал добавить
<require
permission = “zope.Public”
interface = “zope.container.interfaces.IReadContainer”
/>
Сервер не запускается. Пишет конфигуратион еррор
For: ('protectedName', <class ‘…section.Section’>, ‘__contains__’)



Отредактировано (Сен. 23, 2010 11:31:19)

Офлайн

#4 Сен. 23, 2010 11:19:47

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

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

вот изначальная регистрация класса:

<class class=".section.Section">
<require
interface=".interfaces.ISection"
permission="zope.Public"
/>
<require
set_schema=".interfaces.ISection"
permission="zope.Public"
/>
</class>
P.S. а что насчёт template/title? там другая ошибка



Отредактировано (Сен. 23, 2010 11:49:38)

Офлайн

#5 Сен. 23, 2010 11:27:00

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

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

1.

LightOfMooN
почему он считает его атрибутом, если это метод?
Даже в википедии написано:
wikipedia
В Питоне поля и методы обычно называются общим термином атрибуты
2.
LightOfMooN
For: ('protectedName', <class ‘…section.Section’>, ‘__conteins__’)
А что это такое - __conteins__?

3. Можно взглянуть на сам класс и интерфейс и их настройки?



Офлайн

#6 Сен. 23, 2010 11:37:58

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

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

Извиняюсь, опечатка -> __contains__

класс section.py

from zope.interface import implements
from zope.container.btree import BTreeContainer
from interfaces import ISection

class Section(BTreeContainer):

implements(ISection)

name=u""
image=None
интерфейс interfaces.py
from zope.container.interfaces import IContainer
from zope.schema import TextLine, Bytes

class ISection(IContainer):

name = TextLine(
title=u"",
default=u"",
required=True)

image = Bytes(
title=u"",
default=None,
required=False)
регистрация zcml
<configure xmlns="http://namespaces.zope.org/zope">

<interface
interface=".interfaces.ISection"
type="zope.app.content.interfaces.IContentType"/>

<class class=".section.Section">
<require
interface=".interfaces.ISection"
permission="zope.Public"
/>
<require
set_schema=".interfaces.ISection"
permission="zope.Public"
/>
</class>

<include package=".browser" />

</configure>



Офлайн

#7 Сен. 23, 2010 11:43:34

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

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

Права на контейнер в zcml должны быть указаны, иначе вы не сможете использовать ничего из IReadContainer, и из IWriteContainer.



Офлайн

#8 Сен. 23, 2010 12:04:55

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

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

Как, если не секрет?

<class class=".section.Section">
<require
interface=".interfaces.ISection"
permission="zope.Public"
/>
<require
set_schema=".interfaces.ISection"
permission="zope.Public"
/>
<require
interface="zope.container.interfaces.IReadContainer"
permission="zope.Public"
/>
</class>
так даже не запускается



Офлайн

#9 Сен. 23, 2010 12:19:03

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

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

LightOfMooN
так даже не запускается
А что говорит, я же хрустальным шаром не обладаю.



Офлайн

#10 Сен. 23, 2010 12:25:41

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

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

ConfigurationError
For: ('protectedName', <class ‘…section.Section’>, ‘__contains__’)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version