diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 7f8183b5fc..56db990a2c 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -1,7 +1,7 @@ from django import forms from django.apps import apps from django.db.models import Exists, F, OuterRef, Q -from django.db.models.functions import Coalesce +from django.db.models.functions import Coalesce, ExtractWeekDay from django.urls import reverse, reverse_lazy from django.utils.timezone import now from django.utils.translation import pgettext_lazy, ugettext_lazy as _ @@ -307,6 +307,20 @@ class SubEventFilterForm(FilterForm): ), required=False ) + weekday = forms.ChoiceField( + label=_('Weekday'), + choices=( + ('', _('All days')), + ('2', _('Monday')), + ('3', _('Tuesday')), + ('4', _('Wednesday')), + ('5', _('Thursday')), + ('6', _('Friday')), + ('7', _('Saturday')), + ('1', _('Sunday')), + ), + required=False + ) query = forms.CharField( label=_('Event name'), widget=forms.TextInput(attrs={ @@ -336,6 +350,9 @@ class SubEventFilterForm(FilterForm): elif fdata.get('status') == 'past': qs = qs.filter(presale_end__lte=now()) + if fdata.get('weekday'): + qs = qs.annotate(wday=ExtractWeekDay('date_from')).filter(wday=fdata.get('weekday')) + if fdata.get('query'): query = fdata.get('query') qs = qs.filter( diff --git a/src/pretix/control/templates/pretixcontrol/subevents/index.html b/src/pretix/control/templates/pretixcontrol/subevents/index.html index ecdb07416b..5ba66e6fce 100644 --- a/src/pretix/control/templates/pretixcontrol/subevents/index.html +++ b/src/pretix/control/templates/pretixcontrol/subevents/index.html @@ -22,9 +22,12 @@
{% bootstrap_field filter_form.query layout='inline' %}
-
+
{% bootstrap_field filter_form.status layout='inline' %}
+
+ {% bootstrap_field filter_form.weekday layout='inline' %} +