Many people have offered approaches. I find the simplest and cleanest approach for declaring interfaces is as follows:

class IContactList(IContainer):
      contains('.IContact')

class IContact(Interface):
      ...schema fields...

class IContactContained(IContained):
      containers(IContactList)

Basically, the schema used in your addform CANNOT include IContained.



On Feb 11, 2007, at 7:26 PM, Florian Lindner wrote:

Hello,
I have an addform registered:

    <addform
        label="Add Blog Comment"
        name="AddBlogComment.html"
        schema="..interfaces.IBlogComment"
        content_factory="..blog.BlogComment"
        permission="Blog.AddComment"
    />

    <addMenuItem
        class="..blog.BlogComment"
        title="Blog Comment"
        description="A Blog Comment"
        permission="Blog.AddComment"
        view="AddBlogComment.html"
    />


class IBlogComment(IContained):
    containers(IBlogEntry)

    name = TextLine(
        title = u"Your name",
        description = u"Your name or nickname",
        default = u"Guest",
        required = True)


    email = TextLine(
        title = u"E-Mail",
        required = False)

    content = Text(
        title = u"Blog comment content",
        default = u"",
        required = True)


class BlogComment(Contained):
    """ A comment to a Blog entry. """
    implements(IBlogComment)

    name = u""
    email = u""
    content = u""


but when I call the addform resp. click on the addMenuItem I get an system
error:

2007-02-11T19:19:46 ERROR SiteError
http://localhost:8080/xgm/Blog/2007_02_10_erster_post/+/ AddBlogComment.html
Traceback (most recent call last):
File "/home/florian/Zope3/src/zope/publisher/publish.py", line 130, in
publish
    obj = request.traverse(obj)
File "/home/florian/Zope3/src/zope/publisher/browser.py", line 511, in
traverse
    ob = super(BrowserRequest, self).traverse(obj)
File "/home/florian/Zope3/src/zope/publisher/http.py", line 447, in traverse
    ob = super(HTTPRequest, self).traverse(obj)
File "/home/florian/Zope3/src/zope/publisher/base.py", line 263, in traverse
    obj = publication.traverseName(self, obj, entry_name)
File "/home/florian/Zope3/src/zope/app/publication/ publicationtraverse.py",
line 55, in traverseName
    ob2 = ob.publishTraverse(request, nm)
File "/home/florian/Zope3/src/zope/app/publisher/browser/ viewmeta.py", line
271, in publishTraverse
    view = queryMultiAdapter((self, request), name=name)
  File "/home/florian/Zope3/src/zope/component/_api.py", line 114, in
queryMultiAdapter
return sitemanager.queryMultiAdapter(objects, interface, name, default) File "/home/florian/Zope3/src/zope/component/registry.py", line 206, in
queryMultiAdapter
    return self.adapters.queryMultiAdapter(
File "/home/florian/Zope3/src/zope/interface/adapter.py", line 482, in
queryMultiAdapter
    result = factory(*objects)
File "/home/florian/Zope3/src/zope/app/form/browser/editview.py", line 62,
in __init__
    self._setUpWidgets()
File "/home/florian/Zope3/src/zope/app/form/browser/add.py", line 48, in
_setUpWidgets
setUpWidgets(self, self.schema, IInputWidget, names=self.fieldNames) File "/home/florian/Zope3/src/zope/app/form/utility.py", line 153, in
setUpWidgets
    context=context)
  File "/home/florian/Zope3/src/zope/app/form/utility.py", line 97, in
setUpWidget
    widget = _createWidget(context, field, viewType, view.request)
  File "/home/florian/Zope3/src/zope/app/form/utility.py", line 65, in
_createWidget
    return zapi.getMultiAdapter((field, request), viewType)
  File "/home/florian/Zope3/src/zope/component/_api.py", line 103, in
getMultiAdapter
    raise ComponentLookupError(objects, interface, name)
ComponentLookupError: ((<zope.schema._bootstrapfields.Field object at
0x9e95b2c>, <zope.publisher.browser.BrowserRequest instance
URL=http://localhost:8080/xgm/Blog/2007_02_10_erster_post/+/ AddBlogComment.html>),
<InterfaceClass zope.app.form.interfaces.IInputWidget>, u'')



.... what do I have misconfigured here?

Thanks,

Florian
_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to