From 5800babdabf916bd27051915e27ba20dc0975d3d Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 7 Nov 2023 09:35:51 +0100 Subject: [PATCH] Event list: Add date filter --- src/pretix/control/forms/filter.py | 30 +++++++++++++++++++ .../templates/pretixcontrol/events/index.html | 6 ++++ .../pretixcontrol/organizers/detail.html | 6 ++++ 3 files changed, 42 insertions(+) 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 @@
{% bootstrap_field filter_form.status %}
+
+ {% bootstrap_field filter_form.date_from %} +
+
+ {% bootstrap_field filter_form.date_until %} +
{% bootstrap_field filter_form.organizer %}
diff --git a/src/pretix/control/templates/pretixcontrol/organizers/detail.html b/src/pretix/control/templates/pretixcontrol/organizers/detail.html index 919598235..2d865bd25 100644 --- a/src/pretix/control/templates/pretixcontrol/organizers/detail.html +++ b/src/pretix/control/templates/pretixcontrol/organizers/detail.html @@ -30,6 +30,12 @@
{% bootstrap_field filter_form.status %}
+
+ {% bootstrap_field filter_form.date_from %} +
+
+ {% bootstrap_field filter_form.date_until %} +
{% for mf in meta_fields %}
{% bootstrap_field mf %}