diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index 456ea6e8d9..a4774133aa 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -116,12 +116,16 @@ with scopes_disabled(): @scopes_disabled() def subevent_after_qs(self, qs, name, value): + if getattr(self.request, 'event', None): + subevents = self.request.event.subevents + else: + subevents = SubEvent.objects.filter(event__organizer=self.request.organizer) + qs = qs.filter( pk__in=Subquery( OrderPosition.all.filter( - subevent_id__in=SubEvent.objects.filter( + subevent_id__in=subevents.filter( Q(date_to__gt=value) | Q(date_from__gt=value, date_to__isnull=True), - event=self.request.event ).values_list('id'), ).values_list('order_id') ) @@ -129,12 +133,16 @@ with scopes_disabled(): return qs def subevent_before_qs(self, qs, name, value): + if getattr(self.request, 'event', None): + subevents = self.request.event.subevents + else: + subevents = SubEvent.objects.filter(event__organizer=self.request.organizer) + qs = qs.filter( pk__in=Subquery( OrderPosition.all.filter( - subevent_id__in=SubEvent.objects.filter( + subevent_id__in=subevents.filter( Q(date_from__lt=value), - event=self.request.event ).values_list('id'), ).values_list('order_id') ) diff --git a/src/tests/api/test_orders.py b/src/tests/api/test_orders.py index b520c0dd4d..488274e6f9 100644 --- a/src/tests/api/test_orders.py +++ b/src/tests/api/test_orders.py @@ -498,6 +498,10 @@ def test_organizer_level(token_client, organizer, team, event, event2, order, or assert resp.status_code == 200 assert len(resp.data['results']) == 2 + resp = token_client.get('/api/v1/organizers/{}/orders/?subevent_after=2020-01-01T00:00:00Z'.format(organizer.slug)) + assert resp.status_code == 200 + assert len(resp.data['results']) == 0 + resp = token_client.get('/api/v1/organizers/{}/orders/FOO/'.format(organizer.slug)) assert resp.status_code == 200