From dd9274fd054eec3da364c82d772e90c67b7bfbea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 11 Dec 2017 17:02:15 +0100 Subject: [PATCH] manager: don't crash on empty "time period exception" dialog (#20461) --- chrono/agendas/models.py | 3 +++ tests/test_manager.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py index 682b1104..a68dd98c 100644 --- a/chrono/agendas/models.py +++ b/chrono/agendas/models.py @@ -542,6 +542,9 @@ class TimePeriodException(models.Model): raise ValidationError(_('One or several bookings exists within this time slot.')) def has_booking_within_time_slot(self): + if not (self.start_datetime and self.end_datetime): + # incomplete time period, can't tell + return False for event in Event.objects.filter(agenda=self.desk.agenda, booking__isnull=False, booking__cancellation_datetime__isnull=True): diff --git a/tests/test_manager.py b/tests/test_manager.py index 33bc6508..7283c4e0 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -782,6 +782,10 @@ def test_meetings_agenda_add_time_period_exception_when_booking_exists(app, admi login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk) resp = resp.click('Add a time period exception') + resp = resp.form.submit() # submit empty form + # fields should be marked with errors + assert resp.body.count('This field is required.') == 2 + # try again with data in fields resp.form['start_datetime'] = '2017-05-22 08:00' resp.form['end_datetime'] = '2017-05-26 17:30' resp = resp.form.submit()