API: Fix duplicate results when filtering orders

This commit is contained in:
Raphael Michel
2023-03-03 14:36:40 +01:00
parent c7060d188f
commit ed1dae5fde
2 changed files with 18 additions and 3 deletions

View File

@@ -105,9 +105,9 @@ with scopes_disabled():
subevent_after = django_filters.IsoDateTimeFilter(method='subevent_after_qs')
subevent_before = django_filters.IsoDateTimeFilter(method='subevent_before_qs')
search = django_filters.CharFilter(method='search_qs')
item = django_filters.CharFilter(field_name='all_positions', lookup_expr='item_id')
variation = django_filters.CharFilter(field_name='all_positions', lookup_expr='variation_id')
subevent = django_filters.CharFilter(field_name='all_positions', lookup_expr='subevent_id')
item = django_filters.CharFilter(field_name='all_positions', lookup_expr='item_id', distinct=True)
variation = django_filters.CharFilter(field_name='all_positions', lookup_expr='variation_id', distinct=True)
subevent = django_filters.CharFilter(field_name='all_positions', lookup_expr='subevent_id', distinct=True)
class Meta:
model = Order

View File

@@ -324,6 +324,21 @@ def test_order_list_filter_subevent_date(token_client, organizer, event, order,
assert resp.status_code == 200
assert [res] == resp.data['results']
# Test distinct-ness of results
with scopes_disabled():
OrderPosition.objects.create(
order=order,
item=item,
variation=None,
price=Decimal("23"),
canceled=False,
positionid=3,
subevent=subevent,
)
resp = token_client.get(
'/api/v1/organizers/{}/events/{}/orders/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
assert len(resp.data['results']) == 1
@pytest.mark.django_db
def test_order_list(token_client, organizer, event, order, item, taxrule, question):