From 7db1383ea51e71abda0eeb4e7bb38796cc17f8f4 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 17 Apr 2013 02:30:16 +0200 Subject: Fix "validate and end" on empty forms --- ishtar_common/wizards.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'ishtar_common/wizards.py') diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index df7eaaac1..5229880ef 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -125,7 +125,10 @@ class Wizard(NamedUrlWizardView): storage = self.storage # if modification: show the next steps if self.modification: - next_step = step + next_step = self.steps.first + current_step_passed = False + # force rechecking of conditions + self.get_form_list() while next_step: # check if the form is initialized otherwise initialize it if not storage.get_step_data(next_step): @@ -141,8 +144,14 @@ class Wizard(NamedUrlWizardView): for key in v: form_key = next_step + prefix + key prefixed_values[form_key] = v[key] + if not prefixed_values: + # simulate a non empty data for form that might be + # valid when empty + prefixed_values['__non_empty_data'] = '' storage.set_step_data(next_step, prefixed_values) - if step != next_step: # if not current step + if step == next_step: + current_step_passed = True + elif current_step_passed: next_steps.append(self.form_list[next_step]) next_step = self.get_next_step(next_step) context.update({'next_steps':next_steps}) @@ -584,7 +593,6 @@ class Wizard(NamedUrlWizardView): model_name = self.form_list[step].associated_models['pk' ].__name__.lower() if step == current_step: - #self.reset_wizard(request, storage) self.storage.reset() val = model_name in request.session and request.session[model_name] if val: -- cgit v1.2.3