[Zope3-dev] actions and subclasses in zc.page

Martijn Faassen faassen at infrae.com
Thu Jul 7 13:20:34 EDT 2005


Hi there,

I noticed another possible oddness with zc.page. When I subclass 
form.PageEditForm, I normally get an 'edit' action provided with it, as 
the baseclass defines this.

If I however add my own actions in the subclass, like this:

@form.action("Another")
def handle_another_action(self, action, data):
     ...

the 'edit' action just disappears from the action list.

Not daunted by this, I tried the following to restore the edit action:

@form.action("Edit")
def handle_edit_action(self, action, data):
     super(MyClass, self).handle_edit_action(action, data)

The 'Edit' button now appears in the form. Unfortunately submitting it 
using this button results in:

TypeError: 'Action' object is not callable

Not giving up, I tried it another way, and placed this in the class, 
above the place where the extra action gets defined:

     actions = form.Actions(
         form.Action("Edit", success="handle_edit_action"),
         )

Unfortunately no luck either when I submit:

   File "/home/faassen/working/doclib/py/zc/page/form.py", line 735, in 
__call__
     self.update()
   File "/home/faassen/working/doclib/py/zc/page/form.py", line 715, in 
update
     result = action.success(data)
   File "/home/faassen/working/doclib/py/zc/page/form.py", line 567, in 
success
     return self.success_handler(self.form, self, data)
   File "/home/faassen/working/doclib/py/zc/page/form.py", line 507, in 
<lambda>
     callable = lambda form, action, data: getattr(form, f)(action, data)
TypeError: 'Action' object is not callable

Is this a bug?

Regards,

Martijn


More information about the Zope3-dev mailing list