forked from CGM_Public/pretix_original
Improve support for cross-midnight time slots
This commit is contained in:
@@ -2,7 +2,6 @@ from datetime import timedelta
|
||||
from urllib.parse import urlencode
|
||||
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.forms import formset_factory
|
||||
from django.urls import reverse
|
||||
from django.utils.dates import MONTHS, WEEKDAYS
|
||||
@@ -382,12 +381,6 @@ class TimeForm(forms.Form):
|
||||
required=False
|
||||
)
|
||||
|
||||
def clean(self):
|
||||
d = super().clean()
|
||||
if d.get('time_from') and d.get('time_to') and d['time_from'] > d['time_to']:
|
||||
raise ValidationError({'time_to': _('The end of the event has to be later than its start.')})
|
||||
return d
|
||||
|
||||
|
||||
TimeFormSet = formset_factory(
|
||||
TimeForm,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import copy
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from dateutil.rrule import DAILY, MONTHLY, WEEKLY, YEARLY, rrule, rruleset
|
||||
from django.contrib import messages
|
||||
@@ -739,11 +739,15 @@ class SubEventBulkCreate(SubEventEditorMixin, EventPermissionRequiredMixin, Crea
|
||||
se = copy.copy(form.instance)
|
||||
|
||||
se.date_from = make_aware(datetime.combine(rdate, t['time_from']), tz)
|
||||
se.date_to = (
|
||||
make_aware(datetime.combine(rdate, t['time_to']), tz)
|
||||
if t.get('time_to')
|
||||
else None
|
||||
)
|
||||
|
||||
if t.get('time_to'):
|
||||
se.date_to = (
|
||||
make_aware(datetime.combine(rdate, t['time_to']), tz)
|
||||
if t.get('time_to') > t.get('time_from')
|
||||
else make_aware(datetime.combine(rdate + timedelta(days=1), t['time_to']), tz)
|
||||
)
|
||||
else:
|
||||
se.date_to = None
|
||||
se.date_admission = (
|
||||
make_aware(datetime.combine(rdate, t['time_admission']), tz)
|
||||
if t.get('time_admission')
|
||||
|
||||
@@ -324,7 +324,13 @@ def add_events_for_days(request, baseqs, before, after, ebd, timezones):
|
||||
'event': event,
|
||||
'continued': not first,
|
||||
'time': datetime_from.time().replace(tzinfo=None) if first and event.settings.show_times else None,
|
||||
'time_end': datetime_to.time().replace(tzinfo=None) if date_to == date_from and event.settings.show_times else None,
|
||||
'time_end': (
|
||||
datetime_to.time().replace(tzinfo=None)
|
||||
if (date_to == date_from or (
|
||||
date_to == date_from + timedelta(days=1) and date_to.time() < date_from.time()
|
||||
)) and event.settings.show_times
|
||||
else None,
|
||||
),
|
||||
'url': eventreverse(event, 'presale:event.index'),
|
||||
'timezone': event.settings.timezone,
|
||||
})
|
||||
@@ -387,7 +393,13 @@ def add_subevents_for_days(qs, before, after, ebd, timezones, event=None, cart_n
|
||||
'continued': not first,
|
||||
'timezone': settings.timezone,
|
||||
'time': datetime_from.time().replace(tzinfo=None) if first and settings.show_times else None,
|
||||
'time_end': datetime_to.time().replace(tzinfo=None) if date_to == date_from and settings.show_times else None,
|
||||
'time_end': (
|
||||
datetime_to.time().replace(tzinfo=None)
|
||||
if (date_to == date_from or (
|
||||
date_to == date_from + timedelta(days=1) and date_to.time() < date_from.time()
|
||||
)) and event.settings.show_times
|
||||
else None,
|
||||
),
|
||||
'event': se,
|
||||
'url': eventreverse(se.event, 'presale:event.index', kwargs=kwargs)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user