Найти - Пользователи
Полная версия: Zope3: анонимный доступ к сайту
Начало » Zope/Plone/Bluebream » Zope3: анонимный доступ к сайту
1 2 3
vak
Теперь configure.zcml такой.
Но сам Zope не запускается, осталась какая то ошибка:
сообщает, что один из __init__ получает 3 аргумента, а должен 2.
Это в этом же файле искать?


<configure
xmlns="http://namespaces.zope.org/zope
xmlns:browser=”http://namespaces.zope.org/browser
xmlns:i18n=”http://namespaces.zope.org/i18n
i18n_domain=”GetAbonentData“
>


<class class=”.GetAbonentData.GetAbonent“>
<implements interface=”zope.app.annotation.IAttributeAnnotatable“ />
<factory id=”.GetAbonentData.GetAbonent“ description=”fkejfkrj“ />
<require permission=”zope.View“ interface=”.interfaces.IAbonentData“ />
<require permission=”zope.ManageContent“ set_schema=”.interfaces.IAbonentData“ />
</class>


<interface interface=”.interfaces.IAbonentData“ type=”zope.app.content.interfaces.IContentType“ />


<browser:addMenuItem
class=”.GetAbonentData.GetAbonent“
title=”GetAbonentXMLData“
permission=”zope.ManageContent“
view=”Abonent.html“
/>

<browser:addform
schema=”.interfaces.IAbonentData“
label=”kdfjdkfjjfgkjkgj“
content_factory=”.GetAbonentData.GetAbonent“
arguments=”ul dom kv ls“
name=”Abonent.html“
permission=”zope.ManageContent“
/>


<include package=”.browser" />


</configure>
astoon
vak
сообщает, что один из __init__ получает 3 аргумента, а должен 2.
телепаты, как говорится, в отпуске :) кинь сюда трейсбак.

А я пока поворчу по организации кода:
vak
xmlns:i18n="http://namespaces.zope.org/i18n"
это не обязательно указывать.

vak
i18n_domain=“GetAbonentData”
это не обязательно, хоть zope и выдает предупреждения для нашего удобства. Это полезно, если потом захочешь сделать интернационализацию. В любом случае, когда будешь делать интернационализацию, ты будешь делать один i18n - домен для всего проекта, так что просто назови его названием проекта.

vak
<include package=“.browser” />
обычно директивы пространства имен browser все кладутся в поддиректорию browser директории подпакета проекта, в том числе и те, которые для ZMI. Соответственно, addMenuItem и addform тоже более грамотно было бы перекинуть в my_project/my_package/browser/configure.zcml
Если не хочешь смешивать в одном zcml-файле директивы видов типа page c директивами для ZMI (addMenuForm, editform, addform, например чаще для ZMI используются), тогда - в …/browser/configure.zcml указываешь только директивы для рабочих видов (page и тд), и пишешь там: <include file=“zmi.zcml” /> и в файле zmi.zcml скидываешь всякие addMenuItem.

vak
name=“Abonent.html”
более “human readable” считаются имена вида “abonent.html” или просто “abonent”

vak
“.GetAbonentData.GetAbonent”>
лучше имена файлов называть без прописных букв, типа abonent_data.py
vak
<browser:addform
schema=“.interfaces.IAbonentData”
label=“kdfjdkfjjfgkjkgj”
content_factory=“.GetAbonentData.GetAbonent”
arguments=“ul dom kv ls”
name=“Abonent.html”
permission=“zope.ManageContent”
/>
если в arguments указаны все аттрибуты, то можно вообще это не указывать.


vak
<factory id=“.GetAbonentData.GetAbonent” description=“fkejfkrj” />
это ошибка - назначать id для фабрики начинающийчя с точки. Это ведь не адрес, а именно id.
Смысл его в том, что в директиве class объяляютя права доступа для от этого класса (поддирективы require), это нужно, поскольку класс является фабрикой полезных объектов, в данном случае играющих роль полезного контента. В других местах могут использоваться вызовы этого класса в качестве фабрики, по ее id - вот для этого поддиректива factory.
Обычно выглядит это так:
<factory id=“projectname.packagename.name” />
но id может выглядеть как угодно - это просто id.
astoon
А в принципе можешь приаттачить код проекта если это позволительно, накидаем каркас, пока выходные впереди.
vak
astoon
А в принципе можешь приаттачить код проекта если это позволительно, накидаем каркас, пока выходные впереди.
Три раза файл прицеплял - не вижу чтобы сработало.

Смотря в кусок лога где можно ошибку поискать-исправить подскажите.
mod = __import__(mname, *_import_chickens)
File "/home/zope/lib/python/abonent/GetAbonentData.py", line 7, in ?
from abonent.interfaces import IAbonentData
File "/home/zope/lib/python/abonent/interfaces.py", line 7, in ?
class IAbonentData(zope.interface):
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/home/zope/etc/site.zcml", line 7.2-7.55
ZopeXMLConfigurationError: File "/home/zope/etc/package-includes/abonent-configure.zcml", line 1.0-1.28
ZopeXMLConfigurationError: File "/home/zope/lib/python/abonent/configure.zcml", line 9.4
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
astoon
Честно говоря, не охотя заниматься гаданием на кофейной гуще. Кода-то не видно.
vak
Три раза файл прицеплял - не вижу чтобы сработало.
Заархивируй.
хм.. проверил. tar.gz ломается, а вот zip - нормально.

сегодня или завтра уберу ошибки + предложу свой вариант, который будет удобнее дальше развивать.
vak
astoon
Честно говоря, не охотя заниматься гаданием на кофейной гуще. Кода-то не видно.
vak
Три раза файл прицеплял - не вижу чтобы сработало.
Заархивируй.
хм.. проверил. tar.gz ломается, а вот zip - нормально.

сегодня или завтра уберу ошибки + предложу свой вариант, который будет удобнее дальше развивать.
Упаковал zip-ом.

Понял почему документации не было.
Теперь есть что читать: devmode on в zope.conf


Нужен работающий пример похожий на мою задачу.
Дайте плиз у кого есть.
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