summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-01-07 00:51:24 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-01-07 00:51:24 +0100
commitac07856860b811d27e5cd4265cf85a2523f87a41 (patch)
treeaff390f551a1ef0fd6322a5f5324a70cde2ae6e3 /ishtar/furnitures/forms.py
parent693469193a93c4569472c7aabb9e5565825f62ad (diff)
downloadIshtar-ac07856860b811d27e5cd4265cf85a2523f87a41.tar.bz2
Ishtar-ac07856860b811d27e5cd4265cf85a2523f87a41.zip
Test unicity of parcels (refs #14)
Diffstat (limited to 'ishtar/furnitures/forms.py')
-rw-r--r--ishtar/furnitures/forms.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py
index 6723b99a6..1dc06fb32 100644
--- a/ishtar/furnitures/forms.py
+++ b/ishtar/furnitures/forms.py
@@ -282,11 +282,6 @@ class TownFormSet(FormSet):
TownFormSet = formset_factory(TownForm, can_delete=True, formset=TownFormSet)
TownFormSet.form_label = _("Towns")
-class ParcelFormSet(FormSet):
- def __init__(self, *args, **kwargs):
- super(FormSet, self).__init__(*args, **kwargs)
-
-
class ParcelForm(forms.Form):
form_label = _("Parcels")
town = forms.ChoiceField(label=_("Town"), choices=(),
@@ -312,6 +307,25 @@ class ParcelForm(forms.Form):
if towns:
self.fields['town'].choices = [('', '--')] + towns
+class ParcelFormSet(FormSet):
+ def clean(self):
+ """Checks that no parcels are duplicated."""
+ if any(self.errors):
+ return
+ parcels = []
+ for i in range(0, self.total_form_count()):
+ form = self.forms[i]
+ if not hasattr(form, 'cleaned_data')\
+ or 'town' not in form.cleaned_data \
+ or 'section' not in form.cleaned_data \
+ or 'parcel_number' not in form.cleaned_data:
+ continue
+ parcel = (form.cleaned_data['town'], form.cleaned_data['section'],
+ form.cleaned_data['parcel_number'])
+ if parcel in parcels:
+ raise forms.ValidationError, _("There are identical parcels.")
+ parcels.append(parcel)
+
ParcelFormSet = formset_factory(ParcelForm, can_delete=True,
formset=ParcelFormSet)
ParcelFormSet.form_label = _("Parcels")