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 (
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
logger = logging.getLogger(__name__)
@@ -789,6 +789,10 @@ class EventSettingsSerializer(SettingsSerializer):
data = super().validate(data)
settings_dict = self.instance.freeze()
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)
return data

View File

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

View File

@@ -1212,7 +1212,12 @@ def test_patch_event_settings(token_client, organizer, event):
resp = token_client.patch(
'/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'
)