forked from CGM_Public/pretix_original
Fail gracefully if seats exist multiple times
This commit is contained in:
@@ -82,6 +82,8 @@ class CartPositionCreateSerializer(I18nAwareModelSerializer):
|
|||||||
seat = self.context['event'].seats.get(seat_guid=validated_data['seat'], subevent=validated_data.get('subevent'))
|
seat = self.context['event'].seats.get(seat_guid=validated_data['seat'], subevent=validated_data.get('subevent'))
|
||||||
except Seat.DoesNotExist:
|
except Seat.DoesNotExist:
|
||||||
raise ValidationError('The specified seat does not exist.')
|
raise ValidationError('The specified seat does not exist.')
|
||||||
|
except Seat.MultipleObjectsReturned:
|
||||||
|
raise ValidationError('The specified seat ID is not unique.')
|
||||||
else:
|
else:
|
||||||
validated_data['seat'] = seat
|
validated_data['seat'] = seat
|
||||||
if not seat.is_available():
|
if not seat.is_available():
|
||||||
|
|||||||
@@ -432,6 +432,8 @@ class CartManager:
|
|||||||
seat = (subevent or self.event).seats.get(seat_guid=i.get('seat'))
|
seat = (subevent or self.event).seats.get(seat_guid=i.get('seat'))
|
||||||
except Seat.DoesNotExist:
|
except Seat.DoesNotExist:
|
||||||
raise CartError(error_messages['seat_invalid'])
|
raise CartError(error_messages['seat_invalid'])
|
||||||
|
except Seat.MultipleObjectsReturned:
|
||||||
|
raise CartError(error_messages['seat_invalid'])
|
||||||
i['item'] = seat.product_id
|
i['item'] = seat.product_id
|
||||||
if i['item'] not in self._items_cache:
|
if i['item'] not in self._items_cache:
|
||||||
self._update_items_cache([i['item']], [i['variation']])
|
self._update_items_cache([i['item']], [i['variation']])
|
||||||
|
|||||||
Reference in New Issue
Block a user