From e06be9ee2572516b274e2e0c8f5328ae573f4c64 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 11 Oct 2017 00:08:35 +0200 Subject: [PATCH] API: Writable serializer for LazyI18nString --- src/pretix/api/serializers/i18n.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pretix/api/serializers/i18n.py b/src/pretix/api/serializers/i18n.py index bd03804adb..788427d8bb 100644 --- a/src/pretix/api/serializers/i18n.py +++ b/src/pretix/api/serializers/i18n.py @@ -1,5 +1,7 @@ from django.conf import settings from i18nfield.fields import I18nCharField, I18nTextField +from i18nfield.strings import LazyI18nString +from rest_framework.exceptions import ValidationError from rest_framework.fields import Field from rest_framework.serializers import ModelSerializer @@ -22,6 +24,16 @@ class I18nField(Field): settings.LANGUAGE_CODE: str(value.data) } + def to_internal_value(self, data): + if isinstance(data, str): + return LazyI18nString(data) + elif isinstance(data, dict): + if any([k not in dict(settings.LANGUAGES) for k in data.keys()]): + raise ValidationError('Invalid languages included.') + return LazyI18nString(data) + else: + raise ValidationError('Invalid data type.') + class I18nAwareModelSerializer(ModelSerializer): pass