'This method handles POST requests.
The wizard will render either the current step (if form validation
wasn\'t successful), the next step (if the current step was stored
successful) or the done view (if no more steps are available)'

def post(self, *args, **kwargs):

    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)
    management_form = ManagementForm(self.request.POST, prefix=self.prefix)
    if (not management_form.is_valid()):
        raise ValidationError('ManagementForm    data    is    missing    or    has    been    tampered.')
    form_current_step = management_form.cleaned_data['current_step']
    if ((form_current_step != self.steps.current) and (self.storage.current_step is not None)):
        self.storage.current_step = form_current_step
    form = self.get_form(data=self.request.POST, files=self.request.FILES)
    if form.is_valid():
        self.storage.set_step_data(self.steps.current, self.process_step(form))
        self.storage.set_step_files(self.steps.current, self.process_step_files(form))
        if (self.steps.current == self.steps.last):
            return self.render_done(form, **kwargs)
        else:
            return self.render_next_step(form)
    return self.render(form)
