summaryrefslogtreecommitdiff
path: root/ishtar_common/wizards.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r--ishtar_common/wizards.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 8b6e1a50d..e421c25dd 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -461,15 +461,26 @@ class Wizard(NamedUrlWizardView):
k = u'-'.join(items)
data[k] = data.pop(key)[0]
# get a form key
- base_key = form.form.base_fields.keys()[0]
- init = self.get_form_initial(step)
+ frm = form.form
+ if callable(frm):
+ frm = frm()
+ base_key = frm.base_fields.keys()[-1]
+ init = self.get_form_initial(step, data=data)
total_field = len([key for key in data.keys()
if base_key in key.split('-')
and data[key]])
- if init and not to_delete:
+ if init and not to_delete and (
+ not hasattr(self, 'form_initialized') or
+ not self.form_initialized):
total_field = max((total_field, len(init)))
data[step + u'-INITIAL_FORMS'] = unicode(total_field)
data[step + u'-TOTAL_FORMS'] = unicode(total_field + 1)
+ # update initialization
+ if request.POST and init and hasattr(self, 'form_initialized') \
+ and self.form_initialized:
+ for k in init[0]:
+ data[step + '-' + unicode(total_field) + '-' + k] = \
+ init[0][k]
data = data or None
form = super(Wizard, self).get_form(step, data, files)
return form
@@ -561,7 +572,7 @@ class Wizard(NamedUrlWizardView):
pass
return current_obj
- def get_form_initial(self, step):
+ def get_form_initial(self, step, data=None):
current_obj = self.get_current_object()
current_step = self.steps.current
request = self.request