forked from CGM_Public/pretix_original
API: Fix locale accidentally being a required field
This commit is contained in:
@@ -1102,7 +1102,7 @@ class OrderCreateSerializer(I18nAwareModelSerializer):
|
||||
queryset=SalesChannel.objects.none(),
|
||||
required=False,
|
||||
)
|
||||
locale = serializers.ChoiceField(choices=[])
|
||||
locale = serializers.ChoiceField(choices=[], required=False, allow_null=True)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
@@ -27,7 +27,7 @@ from pretix.base.models import WaitingListEntry
|
||||
|
||||
|
||||
class WaitingListSerializer(I18nAwareModelSerializer):
|
||||
locale = serializers.ChoiceField(choices=[])
|
||||
locale = serializers.ChoiceField(choices=[], required=False, allow_null=True)
|
||||
|
||||
class Meta:
|
||||
model = WaitingListEntry
|
||||
@@ -66,4 +66,7 @@ class WaitingListSerializer(I18nAwareModelSerializer):
|
||||
if data.get('name_parts') and '_scheme' not in data.get('name_parts'):
|
||||
data['name_parts']['_scheme'] = event.settings.name_scheme
|
||||
|
||||
if data.get('locale', None) is None:
|
||||
data['locale'] = event.settings.locale
|
||||
|
||||
return data
|
||||
|
||||
@@ -622,6 +622,23 @@ def test_order_create_sales_channel_invalid(token_client, organizer, event, item
|
||||
assert resp.data == {'sales_channel': ['Object with identifier=foo does not exist.']}
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_order_create_locale_optional(token_client, organizer, event, item, quota, question):
|
||||
event.settings.locale = "de"
|
||||
event.settings.locales = ["en", "de"]
|
||||
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
||||
del res['locale']
|
||||
res['positions'][0]['item'] = item.pk
|
||||
res['positions'][0]['answers'][0]['question'] = question.pk
|
||||
resp = token_client.post(
|
||||
'/api/v1/organizers/{}/events/{}/orders/'.format(
|
||||
organizer.slug, event.slug
|
||||
), format='json', data=res
|
||||
)
|
||||
assert resp.status_code == 201
|
||||
assert resp.data["locale"] == event.settings.locale
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_order_create_locale_invalid(token_client, organizer, event, item, quota, question):
|
||||
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
||||
|
||||
@@ -469,3 +469,21 @@ def test_wle_send_voucher_unavailable(token_client, organizer, event, item, wle,
|
||||
assert resp.status_code == 400
|
||||
wle.refresh_from_db()
|
||||
assert not wle.voucher
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_wle_locale_optional(token_client, organizer, event, item, quota):
|
||||
event.settings.locale = "de"
|
||||
event.settings.locales = ["en", "de"]
|
||||
quota.size = 0
|
||||
quota.save()
|
||||
wle = create_wle(
|
||||
token_client, organizer, event,
|
||||
data={
|
||||
'email': 'testdummy@pretix.eu',
|
||||
'item': item.pk,
|
||||
'variation': None,
|
||||
'subevent': None
|
||||
},
|
||||
)
|
||||
assert wle.locale == "de"
|
||||
|
||||
Reference in New Issue
Block a user