diff --git a/AKModel/models.py b/AKModel/models.py index 6d48498990699fd87e8682cc840292cbc6191e1f..aa4d67030c3460b15c66542f2612997672188d51 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 f7187adebe067dea3ae6b73df2c149c6e0ae7c07..bcfea280e2ebfc755a58fafec7056af4c0ae8216 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'),