[Zope-dev] z3c.form: GroupForm and ModificationEvents

Michael Howitz mh at gocept.com
Wed Jan 13 03:58:14 EST 2010


Am 13.01.2010 um 06:08 schrieb Martin Aspeli:
> Michael Howitz wrote:
>> Hi,
>> 
>> it seems to me that z3c.form.group.GroupForm does not send enough
>> ModificationEvents: only one event for the context of the GroupForm
>> but not for each modified object in the groups.
> 
> -1 to this being default behaviour.
> 
> IObjectModifiedEvent is fired from EditForms, not from forms in general. 

GroupForm has an applyChanges method which send this event. The Group class collects some data for it in its applyChanges method.

> Normally, an EditForm is used to edit "a context". The groups could come 
> from various locations (we use groups to create fieldsets based on 
> schema hints, but they're all logically part of the same content 
> object). I would not expect more than one event sent (in fact, doing 
> this would significantly break code in the wild).

The refactoring needn't break the code in the wild by sending only one ModifiedEvent for each different context object being changed. When a group has the same context as the group form, I agree, there should not be two events.

>> In a project of mine I have the following situation: I have a folder
>> with some contained objects. A GroupForm displays the schema fields
>> of the folder and the ones of all contained objects. When I modify
>> one of the fields of a contained object I would expect a
>> ModifiedEvent for this object. (Is this a valid expectation?) But
>> GroupForm sends only one ModifiedEvent for the Folder (context of the
>> form). This is even wrong in my case. At least the
>> ModifiedEvent-Subscriber in zope.dublincore can't handle this and
>> wrongly marks only the folder as modified.
>> 
>> Do I have a very special use case which should be handled inside my
>> project? Or should I change GroupForm to send a ModifiedEvent for
>> each modified object?
> 
> I think you should override the action handler and do this for your 
> project. I don't think it should be the default behaviour.

I can do so. But am I the only one who edits more than one object in a GroupForm and might need this feature?


Yours sincerely,
-- 
Michael Howitz · mh at gocept.com · software developer
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 8 · fax +49 345 1229889 1
Zope and Plone consulting and development



More information about the Zope-Dev mailing list