Найти - Пользователи
Полная версия: BB TAL.. Что сделать, чтоб хоть что-то работало?
Начало » Zope/Plone/Bluebream » BB TAL.. Что сделать, чтоб хоть что-то работало?
1 2 3 4
LightOfMooN
банально <span tal:content=“python: context.meta_type”></span>
тоже вызывает ForbiddenAttribute: ('meta_type', <zope.site.folder.Folder object at 0x0331B470>)

аналогично в примере из книжки:
ForbiddenAttribute: ('meta_type', <tc.collector.ticketcollector.Collector object at 0x032BCB70>)
regall
Уберите наследование ISection от IContainer. BTreeContainer уже реализует контейнер
LightOfMooN
убрал, теперь:
ForbiddenAttribute: ('get', <intershop.content.section.section.Section object at 0x0333E970>)
LightOfMooN
очистил полностью шаблон отображения

оставил только
<html>
<span tal:content="context/name"/>
</html>
Вот последняя часть лога ошибки:
File 'c:\\intershop\\eggs\\zope.tales-3.5.1-py2.6.egg\\zope\\tales\\tales.py', line 704 in evaluateText
text = self.evaluate(expr)
Line 3
In expression: <PathExpr standard:u'context/name'>
- Names:
{'args': (),
'context': <intershop.content.section.section.Section object at 0x03BAC230>,
'default': <object object at 0x018C1738>,
'loop': {},
'nothing': None,
'options': {},
'repeat': {},
'request': <zope.publisher.browser.BrowserRequest instance URL=http://127.0.0.1:8080/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B/test/@@index>,
'template': <zope.browserpage.viewpagetemplatefile.ViewPageTemplateFile object at 0x03206950>,
'view': <zope.browserpage.metaconfigure.SectionView object at 0x05A23C10>,
'views': <zope.browserpage.viewpagetemplatefile.ViewMapper object at 0x05A23DF0>}
File 'c:\\intershop\\eggs\\zope.tales-3.5.1-py2.6.egg\\zope\\tales\\tales.py', line 696 in evaluate
return expression(self)
File 'c:\\intershop\\eggs\\zope.tales-3.5.1-py2.6.egg\\zope\\tales\\expressions.py', line 217 in __call__
return self._eval(econtext)
File 'c:\\intershop\\eggs\\zope.tales-3.5.1-py2.6.egg\\zope\\tales\\expressions.py', line 194 in _eval
ob = self._subexprs[-1](econtext)
File 'c:\\intershop\\eggs\\zope.tales-3.5.1-py2.6.egg\\zope\\tales\\expressions.py', line 124 in _eval
ob = self._traverser(ob, element, econtext)
File 'c:\\intershop\\eggs\\zope.pagetemplate-3.5.2-py2.6.egg\\zope\\pagetemplate\\engine.py', line 66 in __call__
request=request)
(<intershop.content.section.section.Section object at 0x03BAC230>, 'name')
File 'c:\\intershop\\eggs\\zope.traversing-3.13-py2.6.egg\\zope\\traversing\\adapters.py', line 136 in traversePathElement
return traversable.traverse(nm, further_path)
File 'c:\\intershop\\eggs\\zope.container-3.11.1-py2.6-win32.egg\\zope\\container\\traversal.py', line 102 in traverse
v = container.get(name, _marker)
ForbiddenAttribute: ('get', <intershop.content.section.section.Section object at 0x03BAC230>)
LightOfMooN
может, проблема в том, что в реализации наследование от BTreeContainer, а надо к примеру от Folder?
Sleepwalker
Не уверен что поможет но:

1. Когда описываем интерфейс контейнера желательно разделять схему от основного интерфейса:

from zope.app.container.constraints import contains

class ISectionSchema(Interface):

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

image = Bytes(
title=u"",
default=None,
required=False)

class ISection(ISectionSchema, IContainer):
"Comment"
2. В zcml пишем следующим образом:

<class class=".section.Section">
<require
interface=".interfaces.ISection"
permission="zope.Public"
/>
<require
set_schema=".interfaces.ISectionSchema"
permission="zope.Public"
/>
<require
interface="zope.container.interfaces.IReadContainer"
permission="zope.Public"
/>
</class>
Остальное оставляем как есть. Пока идей других нет… пробуйте так.
LightOfMooN
Sleepwalker
Не уверен что поможет но:

1. Когда описываем интерфейс контейнера желательно разделять схему от основного интерфейса:

from zope.app.container.constraints import contains

class ISectionSchema(Interface):

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

image = Bytes(
title=u"",
default=None,
required=False)

class ISection(ISectionSchema, IContainer):
"Comment"
2. В zcml пишем следующим образом:

<class class=".section.Section">
<require
interface=".interfaces.ISection"
permission="zope.Public"
/>
<require
set_schema=".interfaces.ISectionSchema"
permission="zope.Public"
/>
<require
interface="zope.container.interfaces.IReadContainer"
permission="zope.Public"
/>
</class>
Остальное оставляем как есть. Пока идей других нет… пробуйте так.
К сожалению, не хочет запускаться.
ConfigurationConflictError: Conflicting configuration actions
For: ('protectedName', <class ‘intershop.content.section.section.Section’>, ‘__contains__’)
Sleepwalker
Ну да …

class ISection(ISectionSchema, IContainer)

замени на

class ISection(ISectionSchema)

BtreeContainer уже имплементит интерфейс IContainer
regall
LightOfMooN
ConfigurationConflictError: Conflicting configuration actions
В таком случае два раза права устанавливаются. Один раз для объекта BTreeContainer, второй раз для Section, поэтому возникает конфликт, так как BB не понимает, какую конфигурацию брать.
LightOfMooN
оно запустилось =)
но ошибка осталась:
ForbiddenAttribute: ('objectValues', <intershop.content.section.section.Section object at 0x033396F0>)
=(
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB