summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit53626da019d22a6b7eeadbedad983ba187b2f54c (patch)
tree09b77ad78b580cc8309b419ef8a62ea6562bb588
parentb8ba0c6cb2ed1a8a05f72cf60110cccb9cab16ce (diff)
downloadChimè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.py11
-rw-r--r--chimere/models.py2
-rw-r--r--chimere/tests.py29
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()