pyramid_deform icon indicating copy to clipboard operation
pyramid_deform copied to clipboard

Expand documentation, add prepare_form method, add ignore_buttons argument

Open davidjb opened this issue 12 years ago • 1 comments

This pull request allows the possibility of instantiating the FormView as a means to obtaining an instance of the form it will create. This is useful in the situation where you have a dedicated FormView for a form and want to re-use the given form (and just the form) on another view. My specific use-case is rendering the form to display in multiple locations, but only process input on one view.

Rendering the entire FormView can be costly and likely will prove problematic as the call method checks things like the request's POST, etc. This hook allows you to instead get just the form instance out via something like:

view = FormView(context, request) #class used as a dedicated view elsewhere
form = view.prepare_form()
...

So, this means that you are able to render or do something else with the form, and don't need to re-define the form configuration.

The ignore_buttons argument for the FormView.call method allows button handler methods to be able to re-render the view (eg by calling self(ignore_buttons=True) within a save_success method) and change the response before it gets returned to the user. Previously, trying to do this resulted in infinite recursion since the button handler would effectively call itself.

This also expands on documentation within pyramid_deform concerning the CSRF schema and other aspects.

davidjb avatar Jan 30 '13 00:01 davidjb

Rebased on latest changes in this repo so it can be automatically merged.

Is this package still being maintained? If help is required, I'm happy to be further involved.

davidjb avatar Jul 13 '15 22:07 davidjb