diff --git a/AKModel/availability/models.py b/AKModel/availability/models.py index b44cf9bda19e51aa287f9c34ce116c9c3a55f2b1..20a7a36a800a04559230154cda6c347d884607e6 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 d1f7e547c1a6c91f474b286859bc7c1d48455597..bbd3dcbcde33715cdead1003e95d955d3c0541ae 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):