[Grok-dev] Re: Using martian to load schemata
Martin Aspeli
optilude at gmx.net
Wed Jun 25 12:42:14 EDT 2008
Martijn Faassen <faassen <at> startifact.com> writes:
> Yes, this is a good point. grok.Fields() (or formlib FormFields) work
> during import time, so you can't get the schema yet.
>
> You can work around this, but you'd need to make it a property:
>
> class MyForm(grok.EditForm):
> @property
> def form_fields(self):
> return grok.Fields(IMySchema)
>
> This way grok.Fields will only be executed during runtime, as the form
> is being rendered.
>
> We run into similar problems when generating a schema from RDB schema.
> It's unfortunate the form code assumes the schemas need to exist already
> during import time. I wonder whether z3c.form has a better way?
Sounds like a bit of a general problem. If you want to be able to use Zope
3 components in grokkers/martian directives, you're going to get into funny
dependency loops, I think.
Martin
More information about the Grok-dev
mailing list