summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-01-06 11:21:57 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-01-06 11:21:57 +0100
commitc446500d56e2f1d49d7d602b5066c8613267184e (patch)
tree959ab639c0dd85d3cfcb9977401627b6e16de4d2 /ishtar/furnitures/forms.py
parent15a67f1b6300c1eadde9771e2f24983871f0a99d (diff)
downloadIshtar-c446500d56e2f1d49d7d602b5066c8613267184e.tar.bz2
Ishtar-c446500d56e2f1d49d7d602b5066c8613267184e.zip
Manage a modify button in formsets (refs #51)
Diffstat (limited to 'ishtar/furnitures/forms.py')
-rw-r--r--ishtar/furnitures/forms.py31
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")