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()  | 
