diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-05 00:33:07 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-05 00:33:07 +0200 |
commit | b2a879890cef5721accff66904be478de488b120 (patch) | |
tree | a2c624b1ce76c6d57a8a156766e4863710d8ae19 /ishtar_common/wizards.py | |
parent | f41b22f173bb9c9c331fa9eab2a7a8d47d0a57db (diff) | |
download | Ishtar-b2a879890cef5721accff66904be478de488b120.tar.bz2 Ishtar-b2a879890cef5721accff66904be478de488b120.zip |
UI improvment for parcels management (refs #151)
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r-- | ishtar_common/wizards.py | 21 |
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 |