[Zope3-Users] Re: formlib, action decorators and inheritance

Bernd Dorn zope-mailinglist at mopa.at
Mon Jul 17 06:06:55 EDT 2006


hi lorenzo

the Actions class is mutable, so you should copy it when you define  
additional actions in your class

actions = form.AddForm.actions.copy()




On 17.07.2006, at 11:01, Lorenzo Gil Sanchez wrote:

> Hi Jürgen,
>
> I did what you say and it's a little bit better.
>
> Thanks
>
> Lorenzo
>
> Jürgen Kartnaller wrote:
>> Hi Lorenzo.
>> Lorenzo Gil Sanchez wrote:
>>> Hi,
>>>
>>> I have an add form which a subclass of form.AddForm. It just adds  
>>> a 'cancel' action.
>>>
>>> This is my code:
>>>
>>> class AddView(form.AddForm):
>> Try this here :
>>       actions = form.AddForm.actions
>>>
>>>     form_fields = form.Fields(IDocument).omit('__name__')
>>>
>>>     def create(self, data):
>>>         return Document(**data)
>>>
>>>     def nextURL(self):
>>>         url = zapi.absoluteURL(self.context.context, self.request)
>>>         return url
>>>
>>>     @form.action(u'Cancel', validator=always_good)
>>>     def handle_cancel(self, action, data):
>>>         self.request.response.redirect(self.nextURL())
>>>
>>> When I define the 'cancel' action using the @form.action  
>>> decorator it seems that the 'add' action is lost. That action is  
>>> defined in my super class.
>>>
>>> As a workaround I do the following:
>>>
>>>     def handle_cancel(self, action, data):
>>>         self.request.response.redirect(self.nextURL())
>>>
>>>     actions = form.AddForm.actions + form.Actions(
>>>         form.Action(u'Cancel',
>>>                     success='handle_cancel', validator=always_good),
>>>         )
>>>
>>> but I'm not sure if I'm missing something since my workaround is  
>>> uglier than the decorator solution.
>>>
>>> Best regards,
>>>
>>> Lorenzo Gil
>> _______________________________________________
>> Zope3-users mailing list
>> Zope3-users at zope.org
>> http://mail.zope.org/mailman/listinfo/zope3-users
>
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users



More information about the Zope3-users mailing list