From a2cb5722f5530a971627aaa26b3aed09c4ee1fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Sun, 14 Aug 2022 01:27:45 +0200 Subject: [PATCH] Automatically create availability when user doesn't specify them during submission This implements #129 --- AKModel/availability/models.py | 9 +++++++++ AKSubmission/forms.py | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/AKModel/availability/models.py b/AKModel/availability/models.py index b44cf9bd..20a7a36a 100644 --- a/AKModel/availability/models.py +++ b/AKModel/availability/models.py @@ -235,6 +235,15 @@ class Availability(models.Model): def simplified(self): return f'{self.start.astimezone(self.event.timezone).strftime("%a %H:%M")}-{self.end.astimezone(self.event.timezone).strftime("%a %H:%M")}' + @classmethod + def with_event_length(cls, event, person=None, room=None, ak=None, ak_category=None): + timeframe_start = event.start # adapt to our event model + # add 1 day, not 24 hours, https://stackoverflow.com/a/25427822/2486196 + timeframe_end = event.end # adapt to our event model + timeframe_end = timeframe_end + datetime.timedelta(days=1) + return Availability(start=timeframe_start, end=timeframe_end, event=event, person=person, + room=room, ak=ak, ak_category=ak_category) + class Meta: verbose_name = _('Availability') verbose_name_plural = _('Availabilities') diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py index d1f7e547..bbd3dcbc 100644 --- a/AKSubmission/forms.py +++ b/AKSubmission/forms.py @@ -6,6 +6,7 @@ from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ from AKModel.availability.forms import AvailabilitiesFormMixin +from AKModel.availability.models import Availability from AKModel.models import AK, AKOwner, AKCategory, AKRequirement, AKSlot, AKOrgaMessage, Event @@ -133,6 +134,13 @@ class AKSubmissionForm(AKForm): self.initial.get('event').default_slot ) + def clean_availabilities(self): + availabilities = super().clean_availabilities() + # If the user did not specify availabilities assume the full event duration is possible + if len(availabilities) == 0: + availabilities.append(Availability.with_event_length(event=self.cleaned_data["event"])) + return availabilities + class AKEditForm(AKForm): -- GitLab