mirror of
https://github.com/pretix/pretix.git
synced 2026-09-15 16:34:42 +00:00
API: Fix crash when creating addons with order change endpoint (#3363)
This commit is contained in:
@@ -70,6 +70,8 @@ class OrderPositionCreateForExistingOrderSerializer(OrderPositionCreateSerialize
|
|||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data):
|
||||||
data = super().validate(data)
|
data = super().validate(data)
|
||||||
|
if 'order' in self.context:
|
||||||
|
data['order'] = self.context['order']
|
||||||
if data.get('addon_to'):
|
if data.get('addon_to'):
|
||||||
try:
|
try:
|
||||||
data['addon_to'] = data['order'].positions.get(positionid=data['addon_to'])
|
data['addon_to'] = data['order'].positions.get(positionid=data['addon_to'])
|
||||||
|
|||||||
@@ -2002,3 +2002,32 @@ def test_order_change_invalid_input(token_client, organizer, event, order, quota
|
|||||||
)
|
)
|
||||||
assert 'twice' in str(resp.data)
|
assert 'twice' in str(resp.data)
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_order_change_create_addon(token_client, organizer, event, order, quota, item):
|
||||||
|
with scopes_disabled():
|
||||||
|
cat = event.categories.create(name="Workshops")
|
||||||
|
item2 = event.items.create(name="WS1", default_price=23, category=cat)
|
||||||
|
quota.items.add(item2)
|
||||||
|
item.addons.create(addon_category=cat)
|
||||||
|
assert order.positions.count() == 1
|
||||||
|
payload = {
|
||||||
|
'create_positions': [
|
||||||
|
{
|
||||||
|
'item': item2.pk,
|
||||||
|
'addon_to': 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
resp = token_client.post(
|
||||||
|
'/api/v1/organizers/{}/events/{}/orders/{}/change/'.format(
|
||||||
|
organizer.slug, event.slug, order.code,
|
||||||
|
), format='json', data=payload
|
||||||
|
)
|
||||||
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
|
assert order.positions.count() == 2
|
||||||
|
op = order.positions.last()
|
||||||
|
assert op.positionid == 3
|
||||||
|
assert op.addon_to.positionid == 1
|
||||||
|
|||||||
Reference in New Issue
Block a user