diff options
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 | 
