diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 471d56c22..6d2982165 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -1599,6 +1599,20 @@ class EventFilterForm(FilterForm): }), required=False ) + date_from = forms.DateField( + label=_('Date from'), + required=False, + widget=DatePickerWidget({ + 'placeholder': _('Date from'), + }), + ) + date_until = forms.DateField( + label=_('Date until'), + required=False, + widget=DatePickerWidget({ + 'placeholder': _('Date until'), + }), + ) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') @@ -1680,6 +1694,22 @@ class EventFilterForm(FilterForm): Q(name__icontains=i18ncomp(query)) | Q(slug__icontains=query) ) + if fdata.get('date_until'): + date_end = make_aware(datetime.combine( + fdata.get('date_until') + timedelta(days=1), + time(hour=0, minute=0, second=0, microsecond=0) + ), get_current_timezone()) + qs = qs.filter( + Q(date_to__isnull=True, date_from__lt=date_end) | + Q(date_to__isnull=False, date_to__lt=date_end) + ) + if fdata.get('date_from'): + date_start = make_aware(datetime.combine( + fdata.get('date_from'), + time(hour=0, minute=0, second=0, microsecond=0) + ), get_current_timezone()) + qs = qs.filter(date_from__gte=date_start) + filters_by_property_name = {} for i, p in enumerate(self.meta_properties): d = fdata.get('meta_{}'.format(p.name)) diff --git a/src/pretix/control/templates/pretixcontrol/events/index.html b/src/pretix/control/templates/pretixcontrol/events/index.html index 95d4f8446..08b32fb9e 100644 --- a/src/pretix/control/templates/pretixcontrol/events/index.html +++ b/src/pretix/control/templates/pretixcontrol/events/index.html @@ -32,6 +32,12 @@