diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-14 19:40:16 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-14 19:40:16 +0100 |
| commit | 53626da019d22a6b7eeadbedad983ba187b2f54c (patch) | |
| tree | 09b77ad78b580cc8309b419ef8a62ea6562bb588 | |
| parent | b8ba0c6cb2ed1a8a05f72cf60110cccb9cab16ce (diff) | |
| download | Chimère-53626da019d22a6b7eeadbedad983ba187b2f54c.tar.bz2 Chimère-53626da019d22a6b7eeadbedad983ba187b2f54c.zip | |
Forms: don't allow empty area and smae order number (refs #414)
| -rw-r--r-- | chimere/forms.py | 11 | ||||
| -rw-r--r-- | chimere/models.py | 2 | ||||
| -rw-r--r-- | chimere/tests.py | 29 |
3 files changed, 40 insertions, 2 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index fea99b1..5761e2b 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -454,6 +454,17 @@ class AreaAdminForm(forms.ModelForm): keys['initial'] = dct super(AreaAdminForm, self).__init__(*args, **keys) + def clean(self): + ''' + Verify that the area is not empty + ''' + if not self.cleaned_data.get('upper_left_lat') \ + and not self.cleaned_data.get('upper_left_lon') \ + and not self.cleaned_data.get('lower_right_lat') \ + and not self.cleaned_data.get('lower_right_lon'): + msg = _(u"No area selected.") + raise forms.ValidationError(msg) + def save(self, *args, **keys): """ Custom save method in order to manage area diff --git a/chimere/models.py b/chimere/models.py index dffac29..2f59cf1 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -1107,7 +1107,7 @@ class Area(models.Model, SimpleArea): unique=True) welcome_message = models.TextField(_(u"Welcome message"), blank=True, null=True) - order = models.IntegerField(_(u"Order")) + order = models.IntegerField(_(u"Order"), unique=True) available = models.BooleanField(_(u"Available")) upper_left_corner = models.PointField(_(u"Upper left corner"), default='POINT(0 0)', srid=settings.CHIMERE_EPSG_DISPLAY_PROJECTION) diff --git a/chimere/tests.py b/chimere/tests.py index c372202..905978a 100644 --- a/chimere/tests.py +++ b/chimere/tests.py @@ -14,7 +14,7 @@ from django.test import TestCase from chimere.models import Area, Icon, Importer, Category, SubCategory, Marker,\ Route, News -from chimere.forms import MarkerForm +from chimere.forms import MarkerForm, AreaAdminForm from chimere.templatetags.chimere_tags import display_news from chimere.utils import ShapefileManager @@ -204,6 +204,33 @@ class MarkerFormTest(TestCase): form = MarkerForm(data) self.assertEqual(form.is_valid(), False) +class AreaAdminFormTest(TestCase): + def setUp(self): + self.areas = areas_setup() + + def test_area_creation(self): + base_data = {'name':u'New test', 'order':3, 'available':True, + 'urn':'area-new', + 'upper_left_lat':48.5, + 'upper_left_lon':-5, + 'lower_right_lat':48, + 'lower_right_lon':-4, + 'upper_left_corner':'SRID=4326;POINT(0 0)', + 'lower_right_corner':'SRID=4326;POINT(0 0)'} + # order already given + data = base_data.copy() + data['order'] = 1 + form = AreaAdminForm(data) + self.assertEqual(form.is_valid(), False) + # empty area + data = base_data.copy() + data.update({'upper_left_lat': 0, + 'upper_left_lon': 0, + 'lower_right_lat': 0, + 'lower_right_lon': 0}) + form = AreaAdminForm(data) + self.assertEqual(form.is_valid(), False) + class DynamicCategoryTest(TestCase): def setUp(self): self.areas = areas_setup() |
