[Grok-dev] How do I use schema.Object?

Sebastian Ware sebastian at urbantalk.se
Wed Mar 11 05:59:30 EDT 2009

Thank's a lot! This gave me some ideas.

Still hoping that someone can show me the automagically way though :)  
The "has a" relationship is pretty useful.

Mvh Sebastian

11 mar 2009 kl. 01.11 skrev Kevin Teague:

> When you want to edit a schema.Object, you are generally wanting to
> edit all of the fields of the interface that the schema.Object
> conforms to. e.g. If IEvent defines a Boolean field and a Date field,
> then you need to render those fields with Boolean and Date widgets
> respectively.
> When you use "form_fields = grok.AutoFields(INews)" Grok doesn't do
> anything special to the schema.Object field. But you could say that if
> a field is of type Object, and that field has a specific schema
> supplied, then add all of the fields provided by that schema to the
> list of form fields. That likely sounds a bit too magical for
> grok.Fields() or grok.AutoFields() - I might just write-up my own
> function such as AutoFieldsUnrollSubObjectFields().
> Then I would provide an Adapter so that when the sub-fields from the
> Object are edited, they delegate modifications to the sub-object as
> desired. Somewhat like is described here:
> http://grok.zope.org/documentation/tutorial/work-with-forms/using-multiple-schemas-with-a-form
> class NewsEventAdapter(grok.Adapter):
>    "Allows us to edit an Event via a News story"
>    grok.context(News)
>    grok.implements(IEvent)
>    def _get_show_in_calendar(self): return
> self.context.event.show_in_calendar
>    def _set_show_in_calendar(self, value):
> self.context.event.show_in_calendar= value
>    show_in_calendar = property(_get_show_in_calendar,
> _set_show_in_calendar)
>    def _get_event_date(self): return self.context.event.event_date
>    def _set_event_date(self, value): self.context.event.event_date =
> value
>    event_date = property(_get_event_date, _set_event_date)
> _______________________________________________
> 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