From ebf411b7a036b040be6f8ec805c00d93f5995aa8 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 26 Aug 2019 16:33:35 +0200 Subject: [PATCH] Fail gracefully if seats exist multiple times --- src/pretix/api/serializers/cart.py | 2 ++ src/pretix/base/services/cart.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/pretix/api/serializers/cart.py b/src/pretix/api/serializers/cart.py index 8e864b872..2f5db5020 100644 --- a/src/pretix/api/serializers/cart.py +++ b/src/pretix/api/serializers/cart.py @@ -82,6 +82,8 @@ class CartPositionCreateSerializer(I18nAwareModelSerializer): seat = self.context['event'].seats.get(seat_guid=validated_data['seat'], subevent=validated_data.get('subevent')) except Seat.DoesNotExist: raise ValidationError('The specified seat does not exist.') + except Seat.MultipleObjectsReturned: + raise ValidationError('The specified seat ID is not unique.') else: validated_data['seat'] = seat if not seat.is_available(): diff --git a/src/pretix/base/services/cart.py b/src/pretix/base/services/cart.py index 600615b07..a05cb1047 100644 --- a/src/pretix/base/services/cart.py +++ b/src/pretix/base/services/cart.py @@ -432,6 +432,8 @@ class CartManager: seat = (subevent or self.event).seats.get(seat_guid=i.get('seat')) except Seat.DoesNotExist: raise CartError(error_messages['seat_invalid']) + except Seat.MultipleObjectsReturned: + raise CartError(error_messages['seat_invalid']) i['item'] = seat.product_id if i['item'] not in self._items_cache: self._update_items_cache([i['item']], [i['variation']])