Event settings API: Fix setting confirm_texts

This commit is contained in:
Raphael Michel
2021-09-15 16:28:57 +02:00
parent 002469d523
commit 42a1fe9bd1
3 changed files with 15 additions and 2 deletions

View File

@@ -54,7 +54,7 @@ from pretix.base.models.items import SubEventItem, SubEventItemVariation
from pretix.base.services.seating import ( from pretix.base.services.seating import (
SeatProtected, generate_seats, validate_plan_change, SeatProtected, generate_seats, validate_plan_change,
) )
from pretix.base.settings import validate_event_settings from pretix.base.settings import LazyI18nStringList, validate_event_settings
from pretix.base.signals import api_event_settings_fields from pretix.base.signals import api_event_settings_fields
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -789,6 +789,10 @@ class EventSettingsSerializer(SettingsSerializer):
data = super().validate(data) data = super().validate(data)
settings_dict = self.instance.freeze() settings_dict = self.instance.freeze()
settings_dict.update(data) settings_dict.update(data)
if data.get('confirm_texts') is not None:
data['confirm_texts'] = LazyI18nStringList(data['confirm_texts'])
validate_event_settings(self.event, settings_dict) validate_event_settings(self.event, settings_dict)
return data return data

View File

@@ -28,10 +28,14 @@ from pretix.base.reldate import RelativeDateWrapper
class CustomJSONEncoder(I18nJSONEncoder): class CustomJSONEncoder(I18nJSONEncoder):
def default(self, obj): def default(self, obj):
from pretix.base.settings import LazyI18nStringList
if isinstance(obj, RelativeDateWrapper): if isinstance(obj, RelativeDateWrapper):
return obj.to_string() return obj.to_string()
elif isinstance(obj, File): elif isinstance(obj, File):
return obj.name return obj.name
elif isinstance(obj, LazyI18nStringList):
return [s.data for s in obj.data]
if isinstance(obj, PhoneNumber): if isinstance(obj, PhoneNumber):
return str(obj) return str(obj)
else: else:

View File

@@ -1212,7 +1212,12 @@ def test_patch_event_settings(token_client, organizer, event):
resp = token_client.patch( resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug), '/api/v1/organizers/{}/events/{}/settings/'.format(organizer.slug, event.slug),
{ {
'imprint_url': 'https://example.com' 'imprint_url': 'https://example.com',
'confirm_texts': [
{
'de': 'Ich bin mit den AGB einverstanden.'
}
]
}, },
format='json' format='json'
) )