From 7a31738e2c5f29258c23da73dd0ccd7b961c19c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Valentin=20Grou=C3=A8s?= <valentin.groues@uni.lu>
Date: Mon, 27 Mar 2017 16:09:18 +0200
Subject: [PATCH] app was crashing when adding a visit without end or/and start
 date

---
 smash/web/forms.py                   | 5 ++++-
 smash/web/tests/test_VisitAddForm.py | 6 ++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/smash/web/forms.py b/smash/web/forms.py
index c2ba0089..c4fe0540 100644
--- a/smash/web/forms.py
+++ b/smash/web/forms.py
@@ -228,9 +228,12 @@ class VisitAddForm(ModelForm):
         exclude = ['is_finished']
 
     def clean(self):
+        super(VisitAddForm, self).clean()
+        if 'datetime_begin' not in self.cleaned_data or 'datetime_end' not in self.cleaned_data:
+            return
         if self.cleaned_data['datetime_begin'] >= self.cleaned_data['datetime_end']:
             self.add_error('datetime_begin', "Start date must be before end date")
-            self.add_error('datetime_end', "Start date must be before end date")
+            self.add_error('datetime_end', "End date must be after start date")
 
 
 class KitRequestForm(Form):
diff --git a/smash/web/tests/test_VisitAddForm.py b/smash/web/tests/test_VisitAddForm.py
index 6eea4e9f..cf3eff33 100644
--- a/smash/web/tests/test_VisitAddForm.py
+++ b/smash/web/tests/test_VisitAddForm.py
@@ -33,3 +33,9 @@ class SubjectAddFormTests(TestCase):
         self.assertFalse(validation_status)
         self.assertTrue("datetime_begin" in form.errors)
         self.assertTrue("datetime_end" in form.errors)
+
+    def test_invalid_no_dates(self):
+        self.sample_data.pop('datetime_begin')
+        form = VisitAddForm(data=self.sample_data)
+        validation_status = form.is_valid()
+        self.assertFalse(validation_status)
-- 
GitLab