diff options
Diffstat (limited to 'ishtar/furnitures/forms.py')
| -rw-r--r-- | ishtar/furnitures/forms.py | 31 | 
1 files changed, 30 insertions, 1 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index 3753d5cda..4bcc49324 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -140,6 +140,35 @@ class Wizard(NamedUrlSessionFormWizard):          return render_to_response('wizard_done.html', {},                                    context_instance=RequestContext(request)) +    def get_form(self, request, storage, step=None, data=None, files=None): +        """ +        Manage formset +        """ +        if data: +            data = data.copy() +            if not step: +                step = self.determine_step(request, storage) +            form = self.get_form_list(request, storage)[step] +            if hasattr(form, 'management_form'): +                # get a form key +                base_key = form.form.base_fields.keys()[0] +                total_field = len([key for key in data.keys() +                                   if base_key in key.split('-') and data[key]]) +                data[step + u'-INITIAL_FORMS'] = unicode(total_field) +                data[step + u'-TOTAL_FORMS'] = unicode(total_field + 1) +        form = super(Wizard, self).get_form(request, storage, step, data, files) +        return form + +    def render_next_step(self, request, storage, form, **kwargs): +        """ +        Manage the modify button in formset: next_step = current_step +        """ +        if request.POST.has_key('formset_modify') and \ +           request.POST['formset_modify']: +            return self.render(request, storage, form, **kwargs) +        return super(Wizard, self).render_next_step(request, storage, form, +                                                    **kwargs) +  class FileWizard(Wizard):      pass @@ -174,7 +203,7 @@ class TownForm(forms.Form):      town = forms.IntegerField(label=_(u"Town"),           widget=widgets.JQueryAutoComplete("/" + settings.URL_PATH + \                       'autocomplete-town', associated_model=models.Town), -         validators=[models.Town.valid_id]) +         validators=[models.Town.valid_id], required=False)  TownFormSet = formset_factory(TownForm)  TownFormSet.form_label = _("Towns")  | 
