mirror of
https://github.com/pretix/pretix.git
synced 2026-09-14 16:24:43 +00:00
Allow cart creation without attendee name
This commit is contained in:
@@ -27,7 +27,7 @@ class CartPositionSerializer(I18nAwareModelSerializer):
|
|||||||
class CartPositionCreateSerializer(I18nAwareModelSerializer):
|
class CartPositionCreateSerializer(I18nAwareModelSerializer):
|
||||||
answers = AnswerCreateSerializer(many=True, required=False)
|
answers = AnswerCreateSerializer(many=True, required=False)
|
||||||
expires = serializers.DateTimeField(required=False)
|
expires = serializers.DateTimeField(required=False)
|
||||||
attendee_name = serializers.CharField(required=False)
|
attendee_name = serializers.CharField(required=False, allow_null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CartPosition
|
model = CartPosition
|
||||||
|
|||||||
@@ -181,6 +181,24 @@ def test_cartpos_create(token_client, organizer, event, item, quota, question):
|
|||||||
assert cp.attendee_name_parts == {'full_name': 'Peter'}
|
assert cp.attendee_name_parts == {'full_name': 'Peter'}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_cartpos_create_name_optional(token_client, organizer, event, item, quota, question):
|
||||||
|
res = copy.deepcopy(CARTPOS_CREATE_PAYLOAD)
|
||||||
|
res['item'] = item.pk
|
||||||
|
res['attendee_name'] = None
|
||||||
|
del res['attendee_name_parts']
|
||||||
|
resp = token_client.post(
|
||||||
|
'/api/v1/organizers/{}/events/{}/cartpositions/'.format(
|
||||||
|
organizer.slug, event.slug
|
||||||
|
), format='json', data=res
|
||||||
|
)
|
||||||
|
assert resp.status_code == 201
|
||||||
|
cp = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
|
assert cp.price == Decimal('23.00')
|
||||||
|
assert cp.item == item
|
||||||
|
assert cp.attendee_name_parts == {}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_cartpos_create_legacy_name(token_client, organizer, event, item, quota, question):
|
def test_cartpos_create_legacy_name(token_client, organizer, event, item, quota, question):
|
||||||
res = copy.deepcopy(CARTPOS_CREATE_PAYLOAD)
|
res = copy.deepcopy(CARTPOS_CREATE_PAYLOAD)
|
||||||
|
|||||||
@@ -1337,6 +1337,23 @@ def test_order_create_invoice_address_optional(token_client, organizer, event, i
|
|||||||
o.invoice_address
|
o.invoice_address
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_order_create_attendee_name_optional(token_client, organizer, event, item, quota, question):
|
||||||
|
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
||||||
|
res['positions'][0]['attendee_name'] = None
|
||||||
|
res['positions'][0]['item'] = item.pk
|
||||||
|
res['positions'][0]['answers'][0]['question'] = question.pk
|
||||||
|
del res['positions'][0]['attendee_name_parts']
|
||||||
|
resp = token_client.post(
|
||||||
|
'/api/v1/organizers/{}/events/{}/orders/'.format(
|
||||||
|
organizer.slug, event.slug
|
||||||
|
), format='json', data=res
|
||||||
|
)
|
||||||
|
assert resp.status_code == 201
|
||||||
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
|
assert o.positions.first().attendee_name_parts == {}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_order_create_legacy_attendee_name(token_client, organizer, event, item, quota, question):
|
def test_order_create_legacy_attendee_name(token_client, organizer, event, item, quota, question):
|
||||||
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
||||||
|
|||||||
Reference in New Issue
Block a user