Hi again,<br><br>I now have all three forms giving me the component lookup error -- as you sugguested, I changed zope.ManageContent to zope.Public; I'd rather have one problem at a time. I also have a full traceback, because I realized that I didn't include one last night:
<br><br><div style="margin-left: 40px;">zope.component.interfaces.ComponentLookupError:<br>((<z3c.pagelet.zcml.NextActionAddForm object at 0x2b69896b4850>, <zope.publisher.browser.BrowserRequest instance URL=<a href="http://localhost:9080/++skin++MovingTargetBrowser/addNextAction.html">
http://localhost:9080/++skin++MovingTargetBrowser/addNextAction.html</a>>, <zope.app.folder.folder.Folder object at 0x2b69896eb0c8>), <InterfaceClass z3c.form.interfaces.IWidgets>, u'')<br>> /opt/zope/zope-
3.4.0a1/lib/python/zope/component/_api.py(103)getMultiAdapter()<br>-> raise ComponentLookupError(objects, interface, name)<br>(Pdb)<br>Traceback (most recent call last):<br> File "/opt/zope/python2.4//lib/python2.4/threading.py", line 422, in run
<br> self.__target(*self.__args, **self.__kwargs)<br> File "/opt/zope/zope-3.4.0a1/lib/python/twisted/python/threadpool.py", line 148, in _worker<br> context.call(ctx, function, *args, **kwargs)<br> File "/opt/zope/zope-
3.4.0a1/lib/python/twisted/python/context.py", line 59, in callWithContext<br> return self.currentContext().callWithContext(ctx, func, *args, **kw)<br> File "/opt/zope/zope-3.4.0a1/lib/python/twisted/python/context.py", line 37, in callWithContext
<br> return func(*args,**kw)<br>--- <exception caught here> ---<br> File "/opt/zope/zope-3.4.0a1/lib/python/twisted/web2/wsgi.py", line 198, in run<br> result = self.application(self.environment, self.startWSGIResponse
)<br> File "/opt/zope/zope-3.4.0a1/lib/python/zope/app/wsgi/__init__.py", line 72, in __call__<br> return app.__call__(environ, start_response)<br> File "/opt/zope/zope-3.4.0a1/lib/python/zope/app/wsgi/__init__.py", line 54, in __call__
<br> request = publish(request, handle_errors=handle_errors)<br> File "/opt/zope/zope-3.4.0a1/lib/python/zope/publisher/publish.py", line 133, in publish<br> result = publication.callObject(request, obj)<br>
File "/opt/zope/zope-3.4.0a1/lib/python/zope/app/publication/zopepublication.py", line 161, in callObject<br> return mapply(ob, request.getPositionalArguments(), request)<br> File "/opt/zope/zope-3.4.0a1
/lib/python/zope/publisher/publish.py", line 108, in mapply<br> return debug_call(obj, args)<br> File "/opt/zope/zope-3.4.0a1/lib/python/zope/publisher/publish.py", line 114, in debug_call<br> return obj(*args)
<br> File "/opt/zope/python2.4/lib/python2.4/site-packages/z3c.form-1.3.0-py2.4.egg/z3c/form/form.py", line 144, in __call__<br> self.update()<br> File "/opt/zope/python2.4/lib/python2.4/site-packages/z3c.form-
1.3.0-py2.4.egg/z3c/form/form.py", line 139, in update<br> super(Form, self).update()<br> File "/opt/zope/python2.4/lib/python2.4/site-packages/z3c.form-1.3.0-py2.4.egg/z3c/form/form.py", line 88, in update
<br> self.updateWidgets()<br> File "/opt/zope/python2.4/lib/python2.4/site-packages/z3c.form-1.3.0-py2.4.egg/z3c/form/form.py", line 167, in updateWidgets<br> self.widgets = zope.component.getMultiAdapter
(<br> File "/opt/zope/zope-3.4.0a1/lib/python/zope/component/_api.py", line 103, in getMultiAdapter<br> raise ComponentLookupError(objects, interface, name)<br>zope.component.interfaces.ComponentLookupError: ((<
z3c.pagelet.zcml.NextActionAddForm object at 0x2b69896b4850>, <zope.publisher.browser.BrowserRequest instance URL=<a href="http://localhost:9080/++skin++MovingTargetBrowser/addNextAction.html">http://localhost:9080/++skin++MovingTargetBrowser/addNextAction.html
</a>>, <zope.app.folder.folder.Folder object at 0x2b69896eb0c8>), <InterfaceClass z3c.form.interfaces.IWidgets>, u'')<br></div><br>I keep reading over the .txt files in z3c.form, and I feel like I may be missing some line. Do I need a datamanager? My schema is pretty straightforward:
<br><br><div style="margin-left: 40px;">from zope.interface import Interface<br>from zope.schema import Bool, Text, Datetime, TextLine<br><br>class INextAction(Interface):<br> """Stores next actions, or the next physical
<br> thing a person can do for a project"""<br><br> id = TextLine(<br> title=u'ID',<br> readonly=True,<br> required=True)<br> <br> description = Text(<br> title = u"Description",
<br> description = u"What is the next things you can physically do?",<br> required = True<br> )<br><br> done = Bool(<br> title = u"Done?",<br> description = u"Is this Next Action complete?",
<br> required = False<br> )<br><br> due = Datetime(<br> title = u"Due date.",<br> description = u"When must this action be complete?",<br> required = False<br> )
<br></div><br>Thanks again for all the advice; I feel like I'm making a little more progress now :)<br><br>Gratefully,<br>Matt<br><br><div><span class="gmail_quote">On 7/4/07, <b class="gmail_sendername">Hermann Himmelbauer
</b> <<a href="mailto:dusty@qwer.tk">dusty@qwer.tk</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Am Mittwoch, 4. Juli 2007 00:33 schrieb Matt Bowen:
<br>> That was not at all a silly question! That got me a little closer -- I am<br>> new enough not to have understood that i needed the ++skin++. Now, instead<br>> of a 404 page, I get the following when I try to display my object:
<br>><br>> <a href="http://127.0.0.1">127.0.0.1</a> - - [03/Jul/2007:18:26:54 -0400] "GET<br>> /++skin++MovingTargetBrowser/viewguy/ HTTP/1.1" 500 131 "-" "Mozilla/5.0<br>> (X11; U; Linux i686 (x86_64); en-US; rv:
<a href="http://1.8.1.4">1.8.1.4</a>) Gecko/20070515<br>> Firefox/2.0.0.4"<br>> zope.component.interfaces.ComponentLookupError:<br>> ((<z3c.pagelet.zcml.NextActionDisplayForm object at 0x2aaaaaffb6d0>, <
<br>> zope.publisher.browser.BrowserRequest instance URL=<br>> <a href="http://localhost:9080/++skin++MovingTargetBrowser/viewguy/index.html">http://localhost:9080/++skin++MovingTargetBrowser/viewguy/index.html</a>>, <
<br>> movingtarget.nextaction.NextAction object at 0x2adbcf6cd2a8>),<br>> <InterfaceClass z3c.form.interfaces.IWidgets>, u'')<br><br>This looks like some problem with widgets, I'm not sure. Such errors can be
<br>quite frustrating, I do it like this:<br><br>- locate where the adapter is queried, this will be somewhere in the z3c.form<br>package<br>- If not sure, use "print 'HERE I AM'" statements in the source to find out
<br>where the exception is raised<br>- When you found the code line, things hopefully resolve<br>- Sometimes your object/request is not marked with the requested interface,<br>you can check that out with a "print<br>
IRequestedInterface.providedBy(myobject)" in the framework source.<br><br>I know that it is probably a bad style to temporarily modify the framework<br>source but I can't think of a better solution.<br><br>Over the time you'll start to "smell" why these component lookup errors happen
<br>and resolve them more easily.<br><br>> And for edit, I get this:<br>><br>> <a href="http://127.0.0.1">127.0.0.1</a> - - [03/Jul/2007:18:30:30 -0400] "GET<br>> /++skin++MovingTargetBrowser/viewguy/ HTTP/1.1" 500 201 "-" "Mozilla/5.0
<br>> (X11; U; Linux i686 (x86_64); en-US; rv:<a href="http://1.8.1.4">1.8.1.4</a>) Gecko/20070515<br>> Firefox/2.0.0.4"<br>> zope.security.interfaces.Unauthorized:<br>> (<z3c.pagelet.zcml.NextActionEditForm
object at 0x2aaaaaf9dfd0>,<br>> 'browserDefault', 'zope.ManageContent')<br>><br>> > /opt/zope/zope-3.4.0a1<br>><br>> /lib/python/zope/app/publication/browser.py(66)getDefaultTraversal()
<br>> -> return ob.browserDefault(request)<br><br>Maybe you did not log in into the Zope instance? You set the permissions<br>to "zope.ManageContent", you could also change this to "zope.Public" and try
<br>it again.<br><br>Regards,<br>Hermann<br><br>--<br><a href="mailto:x1@aon.at">x1@aon.at</a><br>GPG key ID: 299893C7 (on keyservers)<br>FP: 0124 2584 8809 EF2A DBF9 4902 64B4 D16B 2998 93C7<br></blockquote></div><br>