167 lines
4.3 KiB
Python
167 lines
4.3 KiB
Python
"""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')
|
|
route = serializers.CharField(source='feature.route.page_name')
|
|
source = serializers.IntegerField(source='feature.source')
|
|
|
|
class Meta:
|
|
"""Meta class."""
|
|
model = models.SiteFeature
|
|
fields = ('main',
|
|
'id',
|
|
'slug',
|
|
'priority',
|
|
'route',
|
|
'source'
|
|
)
|
|
|
|
|
|
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 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'
|
|
]
|