Configuration:  Turbogears 2.1.5 CrudRestController, using _before()
calls in the nested controllers.

Issue: 'new' and 'delete' operations on last node of a set of nested
controllers land on the wrong nested controller

Scenario:
/controller1/arg1/controller2/controller3/new ends up calling /
controller1/arg1/controller2/new
controller1, controller2, controller3 all implement _before()

Untested: I've not tested the same for the 'edit' operation (since my
controllers do not implement the edit functionality for the particular
set of controllers in question).

Workaround: Seems to work if
restcontroller.py::RestDispatcher:_check_for_sub_controllers() is
modified to always execute the 'if var_args:' condition (e.g. changing
it to 'if 1:').

Alternative Workaround: Modify
restcontroller.py::RestDispatcher:_handle_get() to call
_handle_delete_edit_or_new() and _handle_custom_get() after the call
to self._is_controller().  With this fix, the 'new' (i.e. http get new
form) works, but the delete function would still not work.

Summary: The http method is tried against the first available item in
the remainder list, instead of being called against the last
controller in the remainder list.

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to