[Grok-dev] Containment Contraints
Souheil CHELFOUH
trollfot at gmail.com
Tue Apr 21 10:10:37 EDT 2009
be sure you exlude __parent__ from the fields to be rendered.
form_fields.omit("__parent__")
2009/4/21 Jeroen Michiel <jmichiel at yahoo.com>:
>
>
> Hugo Lopes-2 wrote:
>>
>> Jeroen, I didn't understand your "test" (IFooContainer and IFoo).
>> Can you pastebin?
>> And the traceback would be nice, too.
>>
>
> I'm trying to do this:
>
> from zope.container.constraints import containers, contains
>
> class IFooContainer(Interface):
> contains('test.app.IFoo')
>
> class FooContainer(grok.Container):
> grok.implements(IFooContainer)
>
> class Test(grok.Application, grok.Container):
> grok.local_utility(FooContainer, provides=IFooContainer, public=True,
> name_in_container='foos')
>
> class IFoo(Interface):
> containers('test.app.IFooContainer')
> bar = schema.TextLine(title=u'Title')
>
> class Foo(grok.Model):
> grok.implements(IFoo)
>
> class AddFoo(grok.AddForm):
> grok.context(IFooContainer)
> form_fields = grok.AutoFields(IFoo)
> grok.name('add')
>
> @grok.action('Add')
> def Add(self, **data):
> foo = Foo()
> self.applyData(foo, **data)
> self.context[foo.bar] = foo
> self.redirect(self.url(foo))
>
> If you then go to http://localhost:8080/test/foos/add
> you get this dump:
> Traceback (most recent call last):
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.publisher-3.4.6-py2.4.egg\zope\publisher\publish.py",
> line 133, in publish
> result = publication.callObject(request, obj)
> File
> "c:\docume~1\jm\buildo~1\eggs\grok-1.0a1-py2.4.egg\grok\publication.py",
> line 91, in callObject
> return super(ZopePublicationSansProxy, self).callObject(request, ob)
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.app.publication-3.4.3-py2.4.egg\zope\app\publication\zopepublication.py",
> line 167, in callObject
> return mapply(ob, request.getPositionalArguments(), request)
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.publisher-3.4.6-py2.4.egg\zope\publisher\publish.py",
> line 108, in mapply
> return debug_call(obj, args)
> - __traceback_info__: <test.app.AddFoo object at 0x02F2B670>
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.publisher-3.4.6-py2.4.egg\zope\publisher\publish.py",
> line 114, in debug_call
> return obj(*args)
> File
> "c:\docume~1\jm\buildo~1\eggs\grokcore.formlib-1.1-py2.4.egg\grokcore\formlib\components.py",
> line 90, in __call__
> self.update_form()
> File
> "c:\docume~1\jm\buildo~1\eggs\grokcore.formlib-1.1-py2.4.egg\grokcore\formlib\components.py",
> line 62, in update_form
> super(GrokForm, self).update()
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.formlib-3.4.0-py2.4.egg\zope\formlib\form.py",
> line 736, in update
> self.setUpWidgets()
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.formlib-3.4.0-py2.4.egg\zope\formlib\form.py",
> line 717, in setUpWidgets
> form=self, adapters=self.adapters, ignore_request=ignore_request)
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.formlib-3.4.0-py2.4.egg\zope\formlib\form.py",
> line 278, in setUpWidgets
> IInputWidget)
> File
> "c:\docume~1\jm\buildo~1\eggs\zope.component-3.4.0-py2.4.egg\zope\component\_api.py",
> line 103, in getMultiAdapter
> raise ComponentLookupError(objects, interface, name)
> ComponentLookupError: ((<zope.schema._bootstrapfields.Field object at
> 0x02F2B730>, <hurry.zoperesource.zopesupport.Request instance
> URL=http://localhost:80
> 80/test/foos/add>), <InterfaceClass zope.app.form.interfaces.IInputWidget>,
> u'')
>
> Am I doing something wrong?
> --
> View this message in context: http://www.nabble.com/Containment-Contraints-tp23152405p23156801.html
> Sent from the Grok mailing list archive at Nabble.com.
>
> _______________________________________________
> Grok-dev mailing list
> Grok-dev at zope.org
> http://mail.zope.org/mailman/listinfo/grok-dev
>
More information about the Grok-dev
mailing list