Moved the code to handle goto requests in a extra WizardView method.
This commit is contained in:
parent
930af661ab
commit
46246c6624
|
@ -257,11 +257,7 @@ class WizardView(TemplateView):
|
|||
# form. (This makes stepping back a lot easier).
|
||||
wizard_goto_step = self.request.POST.get('wizard_goto_step', None)
|
||||
if wizard_goto_step and wizard_goto_step in self.get_form_list():
|
||||
self.storage.current_step = wizard_goto_step
|
||||
form = self.get_form(
|
||||
data=self.storage.get_step_data(self.steps.current),
|
||||
files=self.storage.get_step_files(self.steps.current))
|
||||
return self.render(form)
|
||||
return self.render_goto_step(wizard_goto_step)
|
||||
|
||||
# Check if form was refreshed
|
||||
management_form = ManagementForm(self.request.POST, prefix=self.prefix)
|
||||
|
@ -309,6 +305,17 @@ class WizardView(TemplateView):
|
|||
self.storage.current_step = next_step
|
||||
return self.render(new_form, **kwargs)
|
||||
|
||||
def render_goto_step(self, goto_step, **kwargs):
|
||||
"""
|
||||
This method gets called when the current step has to be changed.
|
||||
`goto_step` contains the requested step to go to.
|
||||
"""
|
||||
self.storage.current_step = goto_step
|
||||
form = self.get_form(
|
||||
data=self.storage.get_step_data(self.steps.current),
|
||||
files=self.storage.get_step_files(self.steps.current))
|
||||
return self.render(form)
|
||||
|
||||
def render_done(self, form, **kwargs):
|
||||
"""
|
||||
This method gets called when all forms passed. The method should also
|
||||
|
@ -652,8 +659,7 @@ class NamedUrlWizardView(WizardView):
|
|||
"""
|
||||
wizard_goto_step = self.request.POST.get('wizard_goto_step', None)
|
||||
if wizard_goto_step and wizard_goto_step in self.get_form_list():
|
||||
self.storage.current_step = wizard_goto_step
|
||||
return redirect(self.get_step_url(wizard_goto_step))
|
||||
return self.render_goto_step(wizard_goto_step)
|
||||
return super(NamedUrlWizardView, self).post(*args, **kwargs)
|
||||
|
||||
def get_context_data(self, form, **kwargs):
|
||||
|
@ -674,6 +680,14 @@ class NamedUrlWizardView(WizardView):
|
|||
self.storage.current_step = next_step
|
||||
return redirect(self.get_step_url(next_step))
|
||||
|
||||
def render_goto_step(self, goto_step, **kwargs):
|
||||
"""
|
||||
This method gets called when the current step has to be changed.
|
||||
`goto_step` contains the requested step to go to.
|
||||
"""
|
||||
self.storage.current_step = goto_step
|
||||
return redirect(self.get_step_url(goto_step))
|
||||
|
||||
def render_revalidation_failure(self, failed_step, form, **kwargs):
|
||||
"""
|
||||
When a step fails, we have to redirect the user to the first failing
|
||||
|
|
|
@ -454,6 +454,17 @@ Advanced ``WizardView`` methods
|
|||
def process_step_files(self, form):
|
||||
return self.get_form_step_files(form)
|
||||
|
||||
.. method:: WizardView.render_goto_step(step, goto_step, **kwargs)
|
||||
|
||||
.. versionchanged:: 1.6
|
||||
|
||||
This method is called when the step should be changed to something else
|
||||
than the next step. By default, this method just stores the requested
|
||||
step ``goto_step`` in the storage and then renders the new step.
|
||||
|
||||
If you want to store the entered data of the current step before rendering
|
||||
the next step, you can overwrite this method.
|
||||
|
||||
.. method:: WizardView.render_revalidation_failure(step, form, **kwargs)
|
||||
|
||||
When the wizard thinks all steps have passed it revalidates all forms with
|
||||
|
|
Loading…
Reference in New Issue