Opened 13 years ago
Closed 13 years ago
#16236 closed New feature (fixed)
Formwizard: computing form initialization keyword arguments
Reported by: | Anton Strogonoff | Owned by: | nobody |
---|---|---|---|
Component: | contrib.formtools | Version: | 1.3 |
Severity: | Normal | Keywords: | wizard |
Cc: | Anton Strogonoff | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | yes |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
Currently, it isn't possible to provide custom form initialization arguments without overriding the entire get_form() method of wizard view, which is some unnecessary code duplication. So it may be better for WizardView to compute form's kwargs in a separate method, like generic FormView does.
For example, with the patch applied, to initialize form at a step called 'delivery-method' with a city that you have since the 'start' step, you would add these lines to your wizard class definition:
def get_form_kwargs(self, step, data=None, files=None): kwargs = super(CheckoutWizard, self)\ .get_form_kwargs(step, data, files) if step == 'delivery-method': kwargs['city'] = self.get_cleaned_data_for_step('start')['city'] return kwargs
I'm unsure whether all these arguments (step, data, files) are necessary for the new method, though. I'm also unsure if use case is common enough, and whether other ways to solve it without lots of code duplication exist. Although it still would be better if WizardView followed FormView's behavior, I guess.
Patch (my first) is pretty small, 5 lines changed (not counting tests and a docstring).
Attachments (1)
Change History (5)
by , 13 years ago
Attachment: | formwizard_form_initkwargs.diff added |
---|
comment:1 by , 13 years ago
Cc: | added |
---|---|
Easy pickings: | set |
comment:2 by , 13 years ago
Needs documentation: | set |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:3 by , 13 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
comment:4 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
In [16398]: