[Zope3-Users] zmi menu error
john saponara
john at saponara.net
Mon Jan 14 09:24:45 EST 2008
I get reasonable edit screens for my car and driver classes when I use a
url like "limoService/car1/edit.html" but when I try to add the edit
screens as zmi menu entries I get an error:
File
"C:\Python24\Lib\site-packages\zope\app\publisher\browser\menu.py", line
62, in getMenuItems
result = [(ifaces.index(item._for or Interface),
ValueError: list.index(x): x not in list
The complete call stack is in the attached error.txt. I'm using v3.3.1
under winxpprosp2. What am I doing wrong?
Thanks,
John
-------------- next part --------------
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="limoService"
>
<interface
interface=".interfaces.ICar"
type="zope.app.content.interfaces.IContentType"
/>
<interface
interface=".interfaces.IDriver"
type="zope.app.content.interfaces.IContentType"
/>
<class class=".classes.Car">
<implements
interface="zope.annotation.interfaces.IAttributeAnnotatable"
/>
<factory
id="limoService.classes.Car"
description="a car"
/>
<require
permission="zope.Public"
interface=".interfaces.ICar"
/>
<require
permission="zope.ManageContent"
set_schema=".interfaces.ICar"
/>
</class>
<class class=".classes.Driver">
<implements
interface="zope.annotation.interfaces.IAttributeAnnotatable"
/>
<factory
id="limoService.classes.Driver"
description="a driver"
/>
<require
permission="zope.Public"
interface=".interfaces.IDriver"
/>
<require
permission="zope.ManageContent"
set_schema=".interfaces.IDriver"
/>
</class>
<browser:addMenuItem
class=".classes.Car"
title="a car"
permission="zope.ManageContent"
description="add Car"
/>
<browser:addMenuItem
class=".classes.Driver"
title="a driver"
permission="zope.ManageContent"
description="add Driver"
/>
<browser:page
for="zope.app.container.interfaces.IAdding"
name="newdriver"
class=".classes.DriverAddForm"
permission="zope.ManageContent"
menu="zmi_views" title="newdriver"
/>
<browser:page
for=".classes.Car"
name="index.html"
class=".classes.CarView"
permission="zope.Public"
template="read.pt"
menu="zmi_views" title="view"
/>
<browser:page
for=".classes.Driver"
name="index.html"
class=".classes.DriverView"
permission="zope.Public"
template="read.pt"
menu="zmi_views" title="view"
/>
<browser:page
for=".interfaces.ICar"
name="edit.html"
class=".classes.CarEdit"
permission="zope.ManageContent"
template="edit.pt"
menu="zmi_views" title="edit"
/>
<browser:page
for=".interfaces.IDriver"
name="edit.html"
class=".classes.DriverEdit"
permission="zope.ManageContent"
template="edit.pt"
menu="zmi_views" title="edit"
/>
<utility
provides="zope.schema.interfaces.IVocabularyFactory"
component=".classes.carsInParent"
name="allCars"
/>
<interface
interface=".interfaces.ILimoservice"
type="zope.app.content.interfaces.IContentType"
/>
<class class=".classes.Limoservice">
<implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable"
/>
<implements
interface="zope.app.container.interfaces.IContentContainer"
/>
<factory
id="limoService.classes.Limoservice"
description="Limoservice"
/>
<require
permission="zope.ManageContent"
interface=".interfaces.ILimoservice"
/>
<require
permission="zope.ManageContent"
set_schema=".interfaces.ILimoservice"
/>
</class>
<browser:addMenuItem
class=".classes.Limoservice"
title="Limoservice"
permission="zope.ManageContent"
/>
<browser:containerViews
for="limoService.interfaces.ILimoservice"
index="zope.View"
contents="zope.View"
add="zope.ManageContent"
/>
</configure>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope3-users/attachments/20080114/fcfc6cd2/edit.htm
-------------- next part --------------
from zope.interface import Interface
from zope.schema import Field, Text, TextLine, Choice, Int, Bool, Date, Datetime, Object
from zope.schema.vocabulary import SimpleVocabulary
from zope.app.container.constraints import ContainerTypesConstraint
from zope.app.container.constraints import ItemTypePrecondition
from zope.app.container.interfaces import IContained, IContainer
class ICar(Interface):
model = TextLine(
title = u'model',
description = u'model',
default = u'',
required = False)
nPassengers = Int(
title = u'nPassengers',
description = u'nPassengers',
default = 0,
required = False)
class IDriver(Interface):
car = Choice(
title = u'car',
description = u'car',
default = None,
source = 'allCars',
required = False)
class ILimoservice(IContainer):
'''container for items of type ICar, IDriver'''
name = TextLine(
title=u'Limoservice',
description=u'a Limoservice container',
default=u'',
required=True)
def __setitem__(name, obj): pass
__setitem__.precondition = ItemTypePrecondition(ICar, IDriver)
class ILimoserviceContained(IContained):
'''for types that can only be contained in a Limoservice'''
__parent__ = Field(constraint = ContainerTypesConstraint(ILimoservice))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope3-users/attachments/20080114/fcfc6cd2/read.htm
-------------- next part --------------
from zope.app import zapi
from zope.interface import implements
from zope.app.container.btree import BTreeContainer
from zope.app.container.contained import Contained
# from persistent import Persistent
from interfaces import ICar, IDriver, ILimoservice, ILimoserviceContained
class Car(Contained):
implements(ICar,ILimoserviceContained)
model=u''
nPassengers=0
class Driver(Contained):
implements(IDriver,ILimoserviceContained)
car=None
class Limoservice(BTreeContainer):
implements(ILimoservice)
class CarView(object):
def message(self):
return 'car model %s holds %d passengers' % (self.context.model, self.context.nPassengers)
class DriverView(object):
def message(self):
if self.context.car:
car=self.context.car
msg='driver drives car model %s, can carry %d passengers' % (car.model,car.nPassengers)
else:
print 'driver has no car!'
msg='no car info'
return msg
from zope.formlib import form
class CarEdit(form.EditForm):
form_fields = form.Fields(ICar)
class DriverEdit(form.EditForm):
form_fields = form.Fields(IDriver)
class DriverAddForm(form.AddForm):
form_fields = form.Fields(IDriver)
from zope.schema.vocabulary import SimpleVocabulary
def carsInParent(context):
'''returns child cars __name__ for subobjects of parent as a vocabulary'''
return SimpleVocabulary.fromItems(
[(k, v) for k, v in context.__parent__.items() if ICar.providedBy(v)])
-------------- next part --------------
2008-01-14T09:13:39 ERROR SiteError http://localhost:2020/mylimo/c1/@@SelectedManagementView.html
Traceback (most recent call last):
File "C:\Python24\Lib\site-packages\zope\publisher\publish.py", line 133, in publish
result = publication.callObject(request, obj)
File "C:\Python24\Lib\site-packages\zope\app\publication\zopepublication.py", line 161, in callObject
return mapply(ob, request.getPositionalArguments(), request)
File "C:\Python24\Lib\site-packages\zope\publisher\publish.py", line 108, in mapply
return debug_call(obj, args)
- __traceback_info__: <security proxied zope.app.publisher.browser.viewmeta.ManagementViewSelector instance at 0x022384B0>
File "C:\Python24\Lib\site-packages\zope\publisher\publish.py", line 114, in debug_call
return obj(*args)
File "C:\Python24\Lib\site-packages\zope\app\publisher\browser\managementviewselector.py", line 35, in __call__
item = getFirstMenuItem('zmi_views', self.context, self.request)
File "C:\Python24\Lib\site-packages\zope\app\publisher\browser\menu.py", line 181, in getFirstMenuItem
items = getMenu(id, object, request)
File "C:\Python24\Lib\site-packages\zope\app\publisher\browser\menu.py", line 176, in getMenu
return menu.getMenuItems(object, request)
File "C:\Python24\Lib\site-packages\zope\app\publisher\browser\menu.py", line 62, in getMenuItems
result = [(ifaces.index(item._for or Interface),
ValueError: list.index(x): x not in list
127.0.0.1 - - [14/Jan/2008:09:13:39 -0400] "GET /mylimo/c1/@@SelectedManagementView.html HTTP/1.1" 500 84 "http://localhost:2020/mylimo/@@contents.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
More information about the Zope3-users
mailing list