"""Main app serializers.""" from rest_framework import serializers from advertisement.serializers.web import AdvertisementSerializer from location.serializers import CountrySerializer from main import models from establishment.models import Establishment from utils.serializers import TranslatedField class FeatureSerializer(serializers.ModelSerializer): """Feature serializer.""" class Meta: """Meta class.""" model = models.Feature fields = ( 'id', 'slug', 'priority' ) class SiteFeatureSerializer(serializers.ModelSerializer): id = serializers.IntegerField(source='feature.id') slug = serializers.CharField(source='feature.slug') priority = serializers.IntegerField(source='feature.priority') class Meta: """Meta class.""" model = models.SiteFeature fields = ('main', 'id', 'slug', 'priority' ) class SiteSettingsSerializer(serializers.ModelSerializer): """Site settings serializer.""" published_features = SiteFeatureSerializer(source='published_sitefeatures', many=True, allow_null=True) # todo: remove this country_code = serializers.CharField(source='subdomain', read_only=True) class Meta: """Meta class.""" model = models.SiteSettings fields = ( 'country_code', 'subdomain', 'pinterest_page_url', 'twitter_page_url', 'facebook_page_url', 'instagram_page_url', 'contact_email', 'config', 'ad_config', 'published_features', ) class SiteSerializer(serializers.ModelSerializer): country = CountrySerializer() class Meta: """Meta class.""" model = models.SiteSettings fields = ('subdomain', 'site_url', 'country') # class SiteFeatureSerializer(serializers.ModelSerializer): # """Site feature serializer.""" # # class Meta: # """Meta class.""" # # model = models.SiteFeature # fields = ( # 'id', # 'published', # 'site_settings', # 'feature', # ) class AwardBaseSerializer(serializers.ModelSerializer): """Award base serializer.""" title_translated = serializers.CharField(read_only=True, allow_null=True) class Meta: model = models.Award fields = [ 'id', 'title_translated', 'vintage_year', ] class AwardSerializer(AwardBaseSerializer): """Award serializer.""" class Meta: model = models.Award fields = AwardBaseSerializer.Meta.fields + ['award_type', ] class MetaDataContentSerializer(serializers.ModelSerializer): """MetaData content serializer.""" id = serializers.IntegerField(source='metadata.id', read_only=True) label_translated = TranslatedField(source='metadata.label_translated') class Meta: """Meta class.""" model = models.MetaDataContent fields = ('id', 'label_translated') class CurrencySerializer(serializers.ModelSerializer): """Currency serializer""" class Meta: model = models.Currency fields = [ 'id', 'name' ] class CarouselListSerializer(serializers.ModelSerializer): """Serializer for retrieving list of carousel items.""" model_name = serializers.CharField() name = serializers.CharField() toque_number = serializers.IntegerField() public_mark = serializers.IntegerField() image = serializers.URLField(source='image_url') awards = AwardBaseSerializer(many=True) vintage_year = serializers.IntegerField() last_award = AwardBaseSerializer(source='the_most_recent_award', allow_null=True) class Meta: """Meta class.""" model = models.Carousel fields = [ 'id', 'model_name', 'name', 'awards', 'toque_number', 'public_mark', 'image', 'vintage_year', 'last_award', 'slug', ] class PageSerializer(serializers.ModelSerializer): page_name = serializers.CharField() advertisements = AdvertisementSerializer(source='advertisements', many=True) class Meta: """Meta class.""" model = models.Carousel fields = [ 'id', 'page_name', 'advertisements' ]