mirror of
https://github.com/pretix/pretix.git
synced 2026-08-15 11:36:27 +00:00
API: Correctly set default position IDs for orders
This commit is contained in:
@@ -312,7 +312,6 @@ class OrderSerializer(I18nAwareModelSerializer):
|
||||
# Even though all fields that shouldn't be edited are marked as read_only in the serializer
|
||||
# (hopefully), we'll be extra careful here and be explicit about the model fields we update.
|
||||
update_fields = ['comment', 'checkin_attention', 'email', 'locale']
|
||||
print(validated_data)
|
||||
|
||||
if 'invoice_address' in validated_data:
|
||||
iadata = validated_data.pop('invoice_address')
|
||||
@@ -598,6 +597,9 @@ class OrderCreateSerializer(I18nAwareModelSerializer):
|
||||
{'positionid': ["If you set addon_to on any position, you need to specify position IDs manually."]}
|
||||
for p in data
|
||||
]
|
||||
else:
|
||||
for i, p in enumerate(data):
|
||||
p['positionid'] = i + 1
|
||||
|
||||
if any(errs):
|
||||
raise ValidationError(errs)
|
||||
|
||||
@@ -2064,6 +2064,37 @@ def test_order_create_positionid_validation(token_client, organizer, event, item
|
||||
]
|
||||
}
|
||||
|
||||
res['positions'] = [
|
||||
{
|
||||
"item": item.pk,
|
||||
"variation": None,
|
||||
"price": "23.00",
|
||||
"attendee_name_parts": {"full_name": "Peter"},
|
||||
"attendee_email": None,
|
||||
"answers": [],
|
||||
"subevent": None
|
||||
},
|
||||
{
|
||||
"item": item.pk,
|
||||
"variation": None,
|
||||
"price": "23.00",
|
||||
"attendee_name_parts": {"full_name": "Peter"},
|
||||
"attendee_email": None,
|
||||
"answers": [],
|
||||
"subevent": None
|
||||
}
|
||||
]
|
||||
resp = token_client.post(
|
||||
'/api/v1/organizers/{}/events/{}/orders/'.format(
|
||||
organizer.slug, event.slug
|
||||
), format='json', data=res
|
||||
)
|
||||
assert resp.status_code == 201
|
||||
with scopes_disabled():
|
||||
o = Order.objects.get(code=resp.data['code'])
|
||||
assert o.positions.first().positionid == 1
|
||||
assert o.positions.last().positionid == 2
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_order_create_answer_validation(token_client, organizer, event, item, quota, question, question2):
|
||||
|
||||
Reference in New Issue
Block a user