diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index b4aa565572..17140ba28d 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -576,7 +576,12 @@ class Event(EventMixin, LoggedModel): | Q(date_to__gte=now()) ) ) # order_by doesn't make sense with I18nField - return sorted(subevs, key=attrgetter(*orderfields)) + for f in reversed(orderfields): + if f.startswith('-'): + subevs = sorted(subevs, key=attrgetter(f[1:]), reverse=True) + else: + subevs = sorted(subevs, key=attrgetter(f)) + return subevs @property def meta_data(self): diff --git a/src/tests/presale/test_event.py b/src/tests/presale/test_event.py index d3a9c2162e..7b25eb7966 100644 --- a/src/tests/presale/test_event.py +++ b/src/tests/presale/test_event.py @@ -172,6 +172,10 @@ class ItemDisplayTest(EventTestMixin, SoupTest): content = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content self.assertLess(content.index('Epic SE'), content.index('Cool SE')) + self.event.settings.frontpage_subevent_ordering = 'date_descending' + content = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content + self.assertLess(content.index('Cool SE'), content.index('Epic SE')) + self.event.settings.frontpage_subevent_ordering = 'name_ascending' content = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug)).rendered_content self.assertLess(content.index('Cool SE'), content.index('Epic SE'))