Browse Source

Validate that floor index >= floors number

Jocelyn Delande 9 years ago
parent
commit
bae17a8e03
2 changed files with 22 additions and 0 deletions
  1. 11 0
      wifiwithme/apps/contribmap/forms.py
  2. 11 0
      wifiwithme/apps/contribmap/tests.py

+ 11 - 0
wifiwithme/apps/contribmap/forms.py

@@ -59,9 +59,20 @@ class PublicContribForm(forms.ModelForm):
             self.add_error('phone', msg)
             self.add_error('phone', msg)
             self.add_error('email', msg)
             self.add_error('email', msg)
 
 
+    def _validate_floors(self, data):
+        if None in (data.get('floor'), data.get('floor_total')):
+            return
+
+        if (data.get('floor') > data.get('floor_total')):
+            self.add_error(
+                'floor',
+                "L'étage doit être inférieur ou égal au nombre d'étages",
+            )
+
     def clean(self):
     def clean(self):
         cleaned_data = super().clean()
         cleaned_data = super().clean()
         self._validate_contact_information(cleaned_data)
         self._validate_contact_information(cleaned_data)
+        self._validate_floors(cleaned_data)
         return cleaned_data
         return cleaned_data
 
 
     def privacy_fields(self):
     def privacy_fields(self):

+ 11 - 0
wifiwithme/apps/contribmap/tests.py

@@ -168,6 +168,17 @@ class TestForms(TestCase):
         self.assertTrue(PublicContribForm(email_contact).is_valid())
         self.assertTrue(PublicContribForm(email_contact).is_valid())
         self.assertTrue(PublicContribForm(both_contact).is_valid())
         self.assertTrue(PublicContribForm(both_contact).is_valid())
 
 
+    def test_floors_validation(self):
+        invalid_floors = self.valid_data.copy()
+        invalid_floors['floor'] = 2
+        invalid_floors['floor_total'] = 1
+
+        self.assertFalse(PublicContribForm(invalid_floors).is_valid())
+        self.assertTrue(PublicContribForm(self.valid_data).is_valid())
+
+        invalid_floors['floor'] = None
+        invalid_floors['floor_total'] = None
+        self.assertTrue(PublicContribForm(invalid_floors).is_valid())
 
 
 class TestDataImport(TestCase):
 class TestDataImport(TestCase):
     fixtures = ['bottle_data.yaml']
     fixtures = ['bottle_data.yaml']