diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index 714dd62d..f1fb40a5 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -7,6 +7,7 @@ from establishment.serializers import ( EstablishmentTypeBaseSerializer) from main.models import Currency from utils.decorators import with_base_attributes +from utils.serializers import TimeZoneChoiceField class EstablishmentListCreateSerializer(EstablishmentBaseSerializer): @@ -19,8 +20,8 @@ class EstablishmentListCreateSerializer(EstablishmentBaseSerializer): phones = ContactPhonesSerializer(read_only=True, many=True, ) emails = ContactEmailsSerializer(read_only=True, many=True, ) socials = SocialNetworkRelatedSerializers(read_only=True, many=True, ) - slug = serializers.SlugField(required=True, allow_blank=False, max_length=50) type = EstablishmentTypeBaseSerializer(source='establishment_type', read_only=True) + tz = TimeZoneChoiceField() class Meta: model = models.Establishment diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index 266ed0df..2846c5c8 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -159,7 +159,6 @@ class EstablishmentBaseSerializer(ProjectModelSerializer): """Base serializer for Establishment model.""" preview_image = serializers.URLField(source='preview_image_url') - slug = serializers.SlugField(allow_blank=False, required=True, max_length=50) address = AddressBaseSerializer() in_favorites = serializers.BooleanField(allow_null=True) tags = TagBaseSerializer(read_only=True, many=True) diff --git a/apps/main/serializers.py b/apps/main/serializers.py index 8975af14..a0af662b 100644 --- a/apps/main/serializers.py +++ b/apps/main/serializers.py @@ -4,7 +4,7 @@ from rest_framework import serializers from advertisement.serializers.web import AdvertisementSerializer from location.serializers import CountrySerializer from main import models -from utils.serializers import ProjectModelSerializer +from utils.serializers import ProjectModelSerializer, TranslatedField class FeatureSerializer(serializers.ModelSerializer): @@ -41,7 +41,9 @@ class SiteFeatureSerializer(serializers.ModelSerializer): class CurrencySerializer(ProjectModelSerializer): - """Currency serializer""" + """Currency serializer.""" + + name_translated = TranslatedField() class Meta: model = models.Currency diff --git a/apps/search_indexes/serializers.py b/apps/search_indexes/serializers.py index 535974a9..d4ab2dbf 100644 --- a/apps/search_indexes/serializers.py +++ b/apps/search_indexes/serializers.py @@ -102,28 +102,3 @@ class EstablishmentDocumentSerializer(DocumentSerializer): # 'establishment_type', # 'establishment_subtypes', ) - - - # def to_representation(self, instance): - # ret = super().to_representation(instance) - # dict_merge = lambda a, b: a.update(b) or a - # - # ret['tags'] = map(lambda tag: dict_merge(tag, {'label_translated': get_translated_value(tag.pop('label'))}), - # ret['tags']) - # ret['establishment_subtypes'] = map( - # lambda subtype: dict_merge(subtype, {'name_translated': get_translated_value(subtype.pop('name'))}), - # ret['establishment_subtypes']) - # if ret.get('establishment_type'): - # ret['establishment_type']['name_translated'] = get_translated_value(ret['establishment_type'].pop('name')) - # if ret.get('address'): - # ret['address']['city']['country']['name_translated'] = get_translated_value( - # ret['address']['city']['country'].pop('name')) - # location = ret['address'].pop('location') - # if location: - # ret['address']['geo_lon'] = location['lon'] - # ret['address']['geo_lat'] = location['lat'] - # - # ret['type'] = ret.pop('establishment_type') - # ret['subtypes'] = ret.pop('establishment_subtypes') - # - # return ret \ No newline at end of file diff --git a/apps/utils/serializers.py b/apps/utils/serializers.py index 90efea00..a2a33ee2 100644 --- a/apps/utils/serializers.py +++ b/apps/utils/serializers.py @@ -1,4 +1,5 @@ """Utils app serializer.""" +import pytz from django.core import exceptions from rest_framework import serializers from utils import models @@ -48,6 +49,21 @@ class TJSONField(serializers.JSONField): validators = [validate_tjson] +class TimeZoneChoiceField(serializers.ChoiceField): + """Take the timezone object and make it JSON serializable.""" + + def __init__(self, choices=None, **kwargs): + if choices is None: + choices = pytz.all_timezones + super().__init__(choices=choices, **kwargs) + + def to_representation(self, value): + return value.zone + + def to_internal_value(self, data): + return pytz.timezone(data) + + class ProjectModelSerializer(serializers.ModelSerializer): """Overrided ModelSerializer."""