[Zope3-Users] problem adding an item to the zmi_views menu

Dolf Andringa dolf.andringa at elcyion.nl
Tue Jul 11 14:40:07 EDT 2006


Hi all,

I'm a newbie to zope3, but I've been looking through google, the zope3 
apidoc, the books by weithershausen and richter and can't find the 
solution to my problem.

I've added two items to the zmi_views menu. One is an browser:editform 
(named AddProject.html), and the other is a browser:page (named 
ViewProject.html).

If I don't add the menu="zmi_views" title="ViewIt" to the 
ViewProject.html page directive in the configure.zcml file and visit
http://localhost:8090/testproject/ViewProject.html, the page displays 
perfectly.

testproject is an instance of the finance.project.Project class. 
Withouth the ViewProject.html page, the addForm and editForm work ok, 
and all three work ok if I don't add the ViewProject.html to the 
zmi_views menu

If I add the menu="zmi_views" title="ViewIt" to the browser:page 
directive, I get an error when visiting the same page.
The error is a "ValueError: list.index(x): x not in list", which does 
not mean much I guess. The full trace does not help me much more though 
(it is listed below), it just tells me something goes wrong generating 
the menu. But I don't get what goes wrong.

I guess it is just something simple, but I can't find what. Who can 
help? My packages configure.zcml,browser/configure.zcml and 
projectview.pt files are below the error trace.


Time
Tue Jul 11 20:28:02 2006
User
admin, zope.manager, Manager,
Request URL
http://localhost:8090/testproject/ViewProject.html
Exception type
ValueError
Exception value
list.index(x): x not in list
Traceback


Traceback (innermost last):

     * Module zope.publisher.publish, line 138, in publish
       result = publication.callObject(request, object)
     * Module zope.app.publication.zopepublication, line 161, in callObject
       return mapply(ob, request.getPositionalArguments(), request)
     * Module zope.publisher.publish, line 113, in mapply
       return debug_call(object, args)
       __traceback_info__: <security proxied 
zope.app.pagetemplate.simpleviewclass.SimpleViewClass from 
/home/dolf/opt/zope/lib/python/finance/browser/projectview.pt instance 
at 0xb5e5882c>
     * Module zope.publisher.publish, line 119, in debug_call
       return object(*args)
     * Module zope.app.pagetemplate.simpleviewclass, line 44, in __call__
       return self.index(*args, **kw)
     * Module zope.app.pagetemplate.viewpagetemplatefile, line 83, in 
__call__
       return self.im_func(im_self, *args, **kw)
     * Module zope.app.pagetemplate.viewpagetemplatefile, line 51, in 
__call__
       sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
     * Module zope.pagetemplate.pagetemplate, line 117, in pt_render
       strictinsert=0, sourceAnnotations=sourceAnnotations)()
     * Module zope.tal.talinterpreter, line 277, in __call__
       self.interpret(self.program)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 908, in do_useMacro
       self.interpret(macro)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 538, in do_optTag_tal
       self.do_optTag(stuff)
     * Module zope.tal.talinterpreter, line 523, in do_optTag
       return self.no_tag(start, program)
     * Module zope.tal.talinterpreter, line 518, in no_tag
       self.interpret(program)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 878, in do_defineMacro
       self.interpret(macro)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 976, in do_defineSlot
       self.interpret(block)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 538, in do_optTag_tal
       self.do_optTag(stuff)
     * Module zope.tal.talinterpreter, line 523, in do_optTag
       return self.no_tag(start, program)
     * Module zope.tal.talinterpreter, line 518, in no_tag
       self.interpret(program)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 872, in do_condition
       self.interpret(block)
     * Module zope.tal.talinterpreter, line 352, in interpret
       handlers[opcode](self, args)
     * Module zope.tal.talinterpreter, line 839, in do_loop_tal
       iterator = self.engine.setRepeat(name, expr)
     * Module zope.tales.tales, line 682, in setRepeat
       expr = self.evaluate(expr)
     * Module zope.tales.tales, line 696, in evaluate
       return expression(self)
 
/home/dolf/opt/zope/lib/python/zope/app/rotterdam/template_tablelayout.pt
       Line 112, Column 24
       Expression: <PathExpr standard:u'context/@@view_get_menu/zmi_views'>
          - Names:
             {'args': (),
              'context': <finance.project.Project object at 0xb5e9c4ec>,
              'default': <object object at 0xb7d67538>,
              'loop': {},
              'nothing': None,
              'options': {},
              'repeat': {},
              'request': <zope.publisher.browser.BrowserRequest instance 
URL=http://localhost:8090/testproject/ViewProject.html>,
              'template': 
<zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object 
at 0xb6bf410c>,
              'usage': <zope.pagetemplate.pagetemplate.TemplateUsage 
object at 0xb5e647ec>,
              'view': 
<zope.app.pagetemplate.simpleviewclass.SimpleViewClass from 
/home/dolf/opt/zope/lib/python/finance/browser/projectview.pt object at 
0xb5e5882c>,
              'views': 
<zope.app.pagetemplate.viewpagetemplatefile.ViewMapper object at 
0xb5e61b2c>}
     * Module zope.tales.expressions, line 205, in __call__
       return self._eval(econtext)
     * Module zope.tales.expressions, line 192, in _eval
       ob = self._subexprs[-1](econtext)
     * Module zope.tales.expressions, line 124, in _eval
       ob = self._traverser(ob, element, econtext)
     * Module zope.app.pagetemplate.engine, line 72, in trustedZopeTraverser
       request=getattr(econtext, 'request', None))
     * Module zope.app.traversing.adapters, line 124, in traverse
       curr = traversePathElement(curr, name, path, request=request)
     * Module zope.app.traversing.adapters, line 177, in traversePathElement
       return traversable.traverse(nm, further_path)
     * Module zope.app.traversing.adapters, line 58, in traverse
       return subject[name]
       __traceback_info__: 
(<zope.app.publisher.browser.viewmeta.MenuAccessView object at 
0xb5e437ec>, 'zmi_views', [])
     * Module zope.app.publisher.browser.menu, line 193, in __getitem__
       return getMenu(menuId, self.context, self.request)
     * Module zope.app.publisher.browser.menu, line 177, in getMenu
       return menu.getMenuItems(object, request)
     * Module zope.app.publisher.browser.menu, line 63, in getMenuItems
       result = [(ifaces.index(item._for or Interface),

ValueError: list.index(x): x not in list

Laat traceback als tekst zien
REQUEST
wsgi.multiprocess: True
GNOME_DESKTOP_SESSION_ID: Default
SERVER_SOFTWARE: Twisted/2.1.0 TwistedWeb/SVN-Trunk
SCRIPT_NAME: /
LESSOPEN: | /usr/bin/lesspipe %s
REQUEST_METHOD: GET
LOGNAME: dolf
USER: dolf
SERVER_PROTOCOL: HTTP/1.1
QUERY_STRING:
PATH: 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
DISPLAY: :0.0
SSH_AGENT_PID: 4965
LANG: nl_NL.UTF-8
HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
TERM: xterm
SHELL: /bin/bash
XAUTHORITY: /home/dolf/.Xauthority
LANGUAGE: nl:en_GB:en
SESSION_MANAGER: local/dolf-desktop:/tmp/.ICE-unix/4923
SHLVL: 1
wsgi.url_scheme: http
WINDOWID: 33555080
SERVER_PORT: 8090
HOME: /home/dolf
USERNAME: dolf
GDM_XSERVER_LOCATION: local
GTK_RC_FILES: /etc/gtk/gtkrc:/home/dolf/.gtkrc-1.2-gnome2
REMOTE_PORT: 34997
SSH_AUTH_SOCK: /tmp/ssh-GwzJiN4923/agent.4923
DESKTOP_SESSION: default
GDMSESSION: default
wsgi.input:
HTTP_USER_AGENT: Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.4) 
Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4
HTTP_HOST: localhost:8090
HTTPS: off
wsgi.multithread: True
wsgi.version: (1, 0)
DBUS_SESSION_BUS_ADDRESS: 
unix:abstract=/tmp/dbus-JIEWoLH3FP,guid=5952b34473ae97706290129982e1a300
_: bin/runzope
REQUEST_URI: /testproject/ViewProject.html
HTTP_ACCEPT: 
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
GNOME_KEYRING_SOCKET: /tmp/keyring-oiAS9J/socket
wsgi.file_wrapper: twisted.web2.wsgi.FileWrapper
LESSCLOSE: /usr/bin/lesspipe %s %s
SERVER_NAME: localhost
GATEWAY_INTERFACE: CGI/1.1
wsgi.run_once: False
OLDPWD: /home/dolf/opt/zope/instances
REMOTE_ADDR: 127.0.0.1
HTTP_ACCEPT_LANGUAGE: nl,en-us;q=0.7,en;q=0.3
REQUEST_SCHEME: http
wsgi.errors:
HISTCONTROL: ignoredups
PWD: /home/dolf/opt/zope/instances/instance001
DESKTOP_STARTUP_ID:
COLORTERM: gnome-terminal
SERVER_PORT_SECURE: 0
LS_COLORS: 
no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;35:*.ogg=01;35:*.wav=01;35:
HTTP_ACCEPT_ENCODING: gzip,deflate
PATH_INFO: /testproject/ViewProject.html



configure.zcml:

<configure
         xmlns="http://namespaces.zope.org/zope"
         xmlns:browser="http://namespaces.zope.org/browser"
	i18n_domain="en">

	<content class=".project.Project">
		<require
			attributes="name"
			permission="zope.Public"
			/>
		<require
			set_attributes="name"
			permission="zope.ManageContent"
			/>
		<factory
			id="finance.Project"
			title="Add a new project"
			description="This factory instantiates a new project"
			/>
	</content>
	<include package=".browser" />
</configure>

browser/configure.zcml:

<configure
	xmlns="http://namespaces.zope.org/zope"
	xmlns:browser="http://namespaces.zope.org/browser"
	>
	
	<browser:addMenuItem
		title="Project"
		class="finance.project.Project"
		permission="zope.ManageContent"
		view="AddProject.html"
		/>
	<browser:addform
		name="AddProject.html"
		permission="zope.ManageContent"
		label="Add a Project"
		content_factory="finance.project.Project"
		schema="finance.interfaces.IProject"
		/>
	<browser:editform
		name="EditProject.html"
		permission="zope.ManageContent"
		menu="zmi_views" title="Edit"
		schema="finance.interfaces.IProject"
		label="Edit the project"
		/>
	<browser:page
		name="ViewProject.html"
		permission="zope.Public"
		template="projectview.pt"
		for="finance.project.Project"
		menu="zmi_views" title="ViewIt"
		/>
</configure>


browser/projectview.pt:

<html metal:use-macro="context/@@standard_macros/view">
<body>
<div metal:fill-slot="body" tal:content="context/name">
</div>
</body>
</html>



More information about the Zope3-users mailing list