From c9d084af8ce719a07d507869d547825835d70a50 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 19 Nov 2012 23:49:12 +0100 Subject: Fix area modification (forgot to exclude current item to order check) --- chimere/forms.py | 2 ++ chimere/tests.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/chimere/forms.py b/chimere/forms.py index 6a7d7aa..49f714f 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -478,6 +478,8 @@ class AreaAdminForm(forms.ModelForm): raise forms.ValidationError(msg) if self.cleaned_data.get('order'): q = Area.objects.filter(order=self.cleaned_data.get('order')) + if self.instance: + q = q.exclude(pk=self.instance.pk) if q.count(): msg= _(u"The area \"%s\" has the same order, you need to " u" choose another one.") % unicode(q.all()[0]) diff --git a/chimere/tests.py b/chimere/tests.py index eeb970c..a865d9b 100644 --- a/chimere/tests.py +++ b/chimere/tests.py @@ -290,9 +290,14 @@ class AreaAdminFormTest(TestCase): 'lower_right_corner':'SRID=4326;POINT(0 0)'} # order already given data = base_data.copy() - data['order'] = 1 + data['order'] = self.areas[0].order form = AreaAdminForm(data) self.assertEqual(form.is_valid(), False) + # update an already existing area + data = base_data.copy() + data['order'] = self.areas[0].order + form = AreaAdminForm(data, instance=self.areas[0]) + self.assertEqual(form.is_valid(), True) # empty area data = base_data.copy() data.update({'upper_left_lat': 0, -- cgit v1.2.3