Check-in list export: Allow to filter by subevent date

This commit is contained in:
Raphael Michel
2020-05-29 19:06:14 +02:00
parent e435e7140c
commit 62db01e353

View File

@@ -1,4 +1,5 @@
from collections import OrderedDict
from datetime import datetime, time, timedelta
import dateutil.parser
from django import forms
@@ -41,6 +42,20 @@ class CheckInListMixin(BaseExporter):
),
initial=self.event.checkin_lists.first()
)),
('date_from',
forms.DateField(
label=_('Start date'),
widget=forms.DateInput(attrs={'class': 'datepickerfield'}),
required=False,
help_text=_('Only include tickets for dates on or after this date.')
)),
('date_to',
forms.DateField(
label=_('End date'),
widget=forms.DateInput(attrs={'class': 'datepickerfield'}),
required=False,
help_text=_('Only include tickets for dates on or before this date.')
)),
('secrets',
forms.BooleanField(
label=_('Include QR-code secret'),
@@ -77,6 +92,10 @@ class CheckInListMixin(BaseExporter):
]
)
if not self.event.has_subevents:
del d['date_from']
del d['date_to']
d['list'].queryset = self.event.checkin_lists.all()
d['list'].widget = Select2(
attrs={
@@ -118,6 +137,20 @@ class CheckInListMixin(BaseExporter):
if cl.subevent:
qs = qs.filter(subevent=cl.subevent)
if form_data.get('date_from'):
dt = make_aware(datetime.combine(
dateutil.parser.parse(form_data['date_from']).date(),
time(hour=0, minute=0, second=0)
), self.event.timezone)
qs = qs.filter(subevent__date_from__gte=dt)
if form_data.get('date_to'):
dt = make_aware(datetime.combine(
dateutil.parser.parse(form_data['date_to']).date() + timedelta(days=1),
time(hour=0, minute=0, second=0)
), self.event.timezone)
qs = qs.filter(subevent__date_from__lt=dt)
o = tuple()
if self.event.has_subevents and not cl.subevent:
o = ('subevent__date_from', 'subevent__name')