diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py
index 7bb0d54c4..f759c9de3 100644
--- a/src/pretix/control/forms/filter.py
+++ b/src/pretix/control/forms/filter.py
@@ -246,8 +246,8 @@ class EventFilterForm(FilterForm):
orders = {
'slug': 'slug',
'organizer': 'organizer__name',
- 'date_from': 'date_from',
- 'date_to': 'date_to',
+ 'date_from': 'order_from',
+ 'date_to': 'order_to',
'live': 'live'
}
status = forms.ChoiceField(
diff --git a/src/pretix/control/templates/pretixcontrol/events/index.html b/src/pretix/control/templates/pretixcontrol/events/index.html
index 4f47801cb..617961a4d 100644
--- a/src/pretix/control/templates/pretixcontrol/events/index.html
+++ b/src/pretix/control/templates/pretixcontrol/events/index.html
@@ -85,11 +85,26 @@
|
{{ e.name }}
+ {% if e.has_subevents %}
+ {% trans "Series" %}
+ {% endif %}
|
{{ e.slug }} |
{% if not hide_orga %}{{ e.organizer }} | {% endif %}
- {{ e.get_date_from_display }} |
- {{ e.get_date_to_display }} |
+
+ {% if e.has_subevents %}
+ {{ e.min_from|default_if_none:"" }}
+ {% else %}
+ {{ e.get_date_from_display }}
+ {% endif %}
+ |
+
+ {% if e.has_subevents %}
+ {{ e.max_fromto|default_if_none:e.max_from|default_if_none:e.max_to|default_if_none:"" }}
+ {% else %}
+ {{ e.get_date_from_display }}
+ {% endif %}
+ |
{% if not e.live %}
{% trans "Shop disabled" %}
diff --git a/src/pretix/control/views/main.py b/src/pretix/control/views/main.py
index 963b8522d..953c4b387 100644
--- a/src/pretix/control/views/main.py
+++ b/src/pretix/control/views/main.py
@@ -2,6 +2,8 @@ from django.conf import settings
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.db import transaction
+from django.db.models import Max, Min
+from django.db.models.functions import Coalesce, Greatest
from django.http import JsonResponse
from django.shortcuts import redirect
from django.utils.crypto import get_random_string
@@ -30,6 +32,17 @@ class EventList(ListView):
qs = self.request.user.get_events_with_any_permission().select_related('organizer').prefetch_related(
'_settings_objects', 'organizer___settings_objects'
).order_by('-date_from')
+
+ qs = qs.annotate(
+ min_from=Min('subevents__date_from'),
+ max_from=Max('subevents__date_from'),
+ max_to=Max('subevents__date_to'),
+ max_fromto=Greatest(Max('subevents__date_to'), Max('subevents__date_from'))
+ ).annotate(
+ order_from=Coalesce('min_from', 'date_from'),
+ order_to=Coalesce('max_fromto', 'max_to', 'max_from', 'date_to'),
+ )
+
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
return qs
|