From 087e9d9e111c94d87c578456755f822c6a31a742 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Fri, 26 Jul 2024 15:40:45 +0200 Subject: [PATCH] include orderposition instead of order in seat info --- src/pretix/api/serializers/event.py | 20 ++++++++++---------- src/pretix/base/models/seating.py | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pretix/api/serializers/event.py b/src/pretix/api/serializers/event.py index 2d9e93e6e6..b93d0463f0 100644 --- a/src/pretix/api/serializers/event.py +++ b/src/pretix/api/serializers/event.py @@ -52,7 +52,7 @@ from pretix.api.serializers import ( from pretix.api.serializers.i18n import I18nAwareModelSerializer from pretix.api.serializers.settings import SettingsSerializer from pretix.base.models import ( - Device, Event, SalesChannel, TaxRule, TeamAPIToken, Seat, CartPosition, Voucher, + Device, Event, SalesChannel, TaxRule, TeamAPIToken, Seat, CartPosition, Voucher, OrderPosition, ) from pretix.base.models.event import SubEvent from pretix.base.models.items import ( @@ -985,7 +985,7 @@ def prefetch_by_id(items, manager, id_attr, id_filter, target_attr): class SeatSerializer(I18nAwareModelSerializer): - order = serializers.CharField(source='order_code') + orderposition = serializers.CharField(source='orderposition_id') cartposition = serializers.IntegerField(source='cartposition_id') voucher = serializers.IntegerField(source='voucher_id') @@ -994,17 +994,17 @@ class SeatSerializer(I18nAwareModelSerializer): read_only_fields = ( 'id', 'subevent', 'zone_name', 'row_name', 'row_label', 'seat_number', 'seat_label', 'seat_guid', 'product', 'sorting_rank', 'x', 'y', - 'order', 'cartposition', 'voucher', + 'orderposition', 'cartposition', 'voucher', ) fields = ( 'id', 'subevent', 'zone_name', 'row_name', 'row_label', 'seat_number', 'seat_label', 'seat_guid', 'product', 'blocked', 'sorting_rank', 'x', 'y', - 'order', 'cartposition', 'voucher', + 'orderposition', 'cartposition', 'voucher', ) def prefetch_expanded_data(self, items, expand_fields, event): - if 'order' in expand_fields: - prefetch_by_id(items, event.organizer.orders.prefetch_related('positions'), 'order_code', 'code', 'order') + if 'orderposition' in expand_fields: + prefetch_by_id(items, OrderPosition.objects.prefetch_related('order'), 'orderposition_id', 'id', 'orderposition') if 'cartposition' in expand_fields: prefetch_by_id(items, CartPosition.objects, 'cartposition_id', 'id', 'cartposition') if 'voucher' in expand_fields: @@ -1018,11 +1018,11 @@ class SeatSerializer(I18nAwareModelSerializer): super().__init__(instance, *args, **kwargs) - if 'order' in self.context['expand_fields']: - from pretix.api.serializers.order import OrderSerializer - self.fields['order'] = OrderSerializer(read_only=True, context=self.context['order_context']) + if 'orderposition' in self.context['expand_fields']: + from pretix.api.serializers.media import NestedOrderPositionSerializer + self.fields['orderposition'] = NestedOrderPositionSerializer(read_only=True, context=self.context['order_context']) try: - del self.fields['order'].fields['positions'].child.fields['seat'] + del self.fields['orderposition'].fields['seat'] except KeyError: pass diff --git a/src/pretix/base/models/seating.py b/src/pretix/base/models/seating.py index 4e95078bf4..229f6ea53e 100644 --- a/src/pretix/base/models/seating.py +++ b/src/pretix/base/models/seating.py @@ -216,7 +216,7 @@ class Seat(models.Model): cqs = cqs.exclude(cart_id=ignore_cart_id) if annotate_ids: qs_annotated = qs.annotate( - order_code=Subquery(opqs.values('order__code')), + orderposition_id=Subquery(opqs.values('id')), cartposition_id=Subquery(cqs.values('id')), voucher_id=Subquery(vqs.values('id')), )