Найти - Пользователи
Полная версия: BB TAL.. Что сделать, чтоб хоть что-то работало?
Начало » Zope/Plone/Bluebream » BB TAL.. Что сделать, чтоб хоть что-то работало?
1 2 3 4
LightOfMooN
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’)

Подскажите, кто знает, как это исправить.
Может какого-то наймспейса не хватает? (тогда не понятно, почему вообще тал и метал работают)
regall
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>
LightOfMooN
почему он считает его атрибутом, если это метод?
там же стоит 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__’)
LightOfMooN
вот изначальная регистрация класса:
<class class=".section.Section">
<require
interface=".interfaces.ISection"
permission="zope.Public"
/>
<require
set_schema=".interfaces.ISection"
permission="zope.Public"
/>
</class>
P.S. а что насчёт template/title? там другая ошибка
regall
1.
LightOfMooN
почему он считает его атрибутом, если это метод?
Даже в википедии написано:
wikipedia
В Питоне поля и методы обычно называются общим термином атрибуты
2.
LightOfMooN
For: ('protectedName', <class ‘…section.Section’>, ‘__conteins__’)
А что это такое - __conteins__?

3. Можно взглянуть на сам класс и интерфейс и их настройки?
LightOfMooN
Извиняюсь, опечатка -> __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>
regall
Права на контейнер в zcml должны быть указаны, иначе вы не сможете использовать ничего из IReadContainer, и из IWriteContainer.
LightOfMooN
Как, если не секрет?
<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>
так даже не запускается
regall
LightOfMooN
так даже не запускается
А что говорит, я же хрустальным шаром не обладаю.
LightOfMooN
ConfigurationError
For: ('protectedName', <class ‘…section.Section’>, ‘__contains__’)
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