diff --git a/src/pretix/api/serializers/order.py b/src/pretix/api/serializers/order.py index e29d0f5dc4..116987ba57 100644 --- a/src/pretix/api/serializers/order.py +++ b/src/pretix/api/serializers/order.py @@ -721,7 +721,7 @@ class OrderPositionCreateSerializer(I18nAwareModelSerializer): class Meta: model = OrderPosition fields = ('positionid', 'item', 'variation', 'price', 'attendee_name', 'attendee_name_parts', 'attendee_email', - 'company', 'street', 'zipcode', 'city', 'country', 'state', + 'company', 'street', 'zipcode', 'city', 'country', 'state', 'is_bundled', 'secret', 'addon_to', 'subevent', 'answers', 'seat', 'voucher') def __init__(self, *args, **kwargs): diff --git a/src/tests/api/test_order_create.py b/src/tests/api/test_order_create.py index e622ddc804..2d94be02f6 100644 --- a/src/tests/api/test_order_create.py +++ b/src/tests/api/test_order_create.py @@ -1126,6 +1126,48 @@ def test_order_create_positionids_addons(token_client, organizer, event, item, q assert pos2.addon_to == pos1 +@pytest.mark.django_db +def test_order_create_is_bundled_addons(token_client, organizer, event, item, quota): + res = copy.deepcopy(ORDER_CREATE_PAYLOAD) + res['positions'] = [ + { + "positionid": 1, + "item": item.pk, + "variation": None, + "price": "23.00", + "attendee_name_parts": {"full_name": "Peter"}, + "attendee_email": None, + "addon_to": None, + "answers": [], + "subevent": None + }, + { + "positionid": 2, + "item": item.pk, + "variation": None, + "price": "23.00", + "attendee_name_parts": {"full_name": "Peter"}, + "attendee_email": None, + "addon_to": 1, + "is_bundled": True, + "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']) + pos1 = o.positions.first() + pos2 = o.positions.last() + assert pos2.addon_to == pos1 + assert pos2.is_bundled + + @pytest.mark.django_db def test_order_create_positionid_validation(token_client, organizer, event, item, quota): res = copy.deepcopy(ORDER_CREATE_PAYLOAD)