[Zope3-dev] problems with <browser:widget>

Adam Groszer adamg at fw.hu
Wed Aug 24 08:16:53 EDT 2005


I'm having problems with using <browser:widget>.

I have an interface:
class ISzerep(Interface):
    name = TextLine(
        title=u"Szerep nev",
        description=u"Szerep nev",
        required=True
        )
    szemelyek = List(
        title=u"Hozzarendelt szemelyek",
        description=u"Hozzarendelt szemelyek",
        required=False,
        value_type=Choice(vocabulary="szemely")
        )

If I add a simple add (or edit) form:
  <browser:addform
      schema="szscreen.interfaces.ISzemely"
      content_factory="szscreen.app.Szemely"
      label="Uj Szemely"
      name="AddSzemely.html"
      permission="zope.ManageContent"
      set_before_add="name"
      >
  </browser:addform>
everything goes well, an OrderedMultiSelectWidget is displayed in the
browser by default for the *szemelyek* field.

If I modify the addform configuration by adding the <widget>:
  <browser:addform
      schema="szscreen.interfaces.ISzemely"
      content_factory="szscreen.app.Szemely"
      label="Uj Szemely"
      name="AddSzemely.html"
      permission="zope.ManageContent"
      set_before_add="name"
      >
      <widget field="szerepek" class="zope.app.form.browser.OrderedMultiSelectWidget"/>
  </browser:addform>
I get an exception:
Traceback (innermost last):
  Module zope.publisher.publish, line 135, in publish
    object = request.traverse(object)
  Module zope.publisher.browser, line 501, in traverse
    ob = super(BrowserRequest, self).traverse(object)
  Module zope.publisher.http, line 386, in traverse
    ob = super(HTTPRequest, self).traverse(object)
  Module zope.publisher.base, line 271, in traverse
    subobject = publication.traverseName(
  Module zope.app.publication.publicationtraverse, line 46, in traverseName
    ob2 = namespaceLookup(ns, nm, ob, request)
  Module zope.app.traversing.namespace, line 119, in namespaceLookup
    return traverser.traverse(name, ())
  Module zope.app.traversing.namespace, line 361, in traverse
    name=name)
  Module zope.component, line 165, in queryMultiAdapter
    return sitemanager.queryMultiAdapter(objects, interface, name, default)
  Module zope.component.site, line 75, in queryMultiAdapter
    default)
  Module zope.interface.adapter, line 481, in queryMultiAdapter
    return factory(*objects)
  Module zope.app.form.browser.editview, line 64, in __init__
    self._setUpWidgets()
  Module zope.app.form.browser.editview, line 69, in _setUpWidgets
    names=self.fieldNames)
  Module zope.app.form.utility, line 224, in setUpEditWidgets
    ignoreStickyValues, context)
  Module zope.app.form.utility, line 101, in setUpWidget
    widget = widget(field.bind(context), view.request)
  Module zope.app.form, line 97, in __call__
    instance = self._widget_factory(*args)
TypeError: __init__() takes exactly 4 arguments (3 given)

All unit and functional test pass, and the worldcookery's
DynamicSequenceWidget example is working.
In fact I wanted to check MultiCheckBoxWidget, but as
OrderedMultiSelectWidget is not working I'm stuck.

Please help

-- 
Best regards,
 Adam                          mailto:adamg at fw.hu
--
Quote of the day:
The greatest pleasure I know is to do a good action by stealth, and to have it found out by accident. 
- Charles Lamb 



More information about the Zope3-dev mailing list