From d35051c0b656a695b160aadcb740310b416f5850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Sun, 21 Apr 2024 17:50:30 +0200 Subject: [PATCH] Restrict AKSlot duration to length of the event This implements #212. --- AKModel/models.py | 8 ++++++++ AKSubmission/forms.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/AKModel/models.py b/AKModel/models.py index 6d484989..aa4d6703 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -600,6 +600,14 @@ class AKSlot(models.Model): """ return self.start < other.end <= self.end or self.start <= other.start < self.end + def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + # Make sure duration is not longer than the event + if update_fields is None or 'duration' in update_fields: + event_duration = self.event.end - self.event.start + event_duration_hours = event_duration.days * 24 + event_duration.seconds // 3600 + self.duration = min(self.duration, event_duration_hours) + super().save(force_insert, force_update, using, update_fields) + class AKOrgaMessage(models.Model): """ diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py index f7187ade..bcfea280 100644 --- a/AKSubmission/forms.py +++ b/AKSubmission/forms.py @@ -86,7 +86,7 @@ class AKForm(AvailabilitiesFormMixin, forms.ModelForm): duration = float(duration.replace(",", ".")) try: - float(duration) + duration = float(duration) except ValueError as exc: raise ValidationError( _('"%(duration)s" is not a valid duration'), -- GitLab