gault-millau/apps/advertisement/serializers/common.py
2019-11-18 12:48:39 +03:00

55 lines
1.6 KiB
Python

"""Serializers for app advertisements"""
from rest_framework import serializers
from advertisement import models
from translation.serializers import LanguageSerializer
from main.serializers import SiteShortSerializer, PageBaseSerializer
from translation.models import Language
from main.models import SiteSettings
class AdvertisementBaseSerializer(serializers.ModelSerializer):
"""Base serializer for model Advertisement."""
languages = LanguageSerializer(many=True, read_only=True,
source='target_languages')
target_languages = serializers.PrimaryKeyRelatedField(
queryset=Language.objects.all(),
many=True,
write_only=True
)
sites = SiteShortSerializer(many=True, read_only=True)
target_sites = serializers.PrimaryKeyRelatedField(
queryset=SiteSettings.objects.all(),
many=True,
write_only=True,
source='sites'
)
class Meta:
model = models.Advertisement
fields = [
'id',
'uuid',
'url',
'block_level',
'languages',
'target_languages',
'sites',
'target_sites',
'start',
'end',
]
class AdvertisementPageTypeCommonListSerializer(AdvertisementBaseSerializer):
"""Serializer for AdvertisementPageTypeCommonView."""
page = PageBaseSerializer(source='common_page', read_only=True)
class Meta(AdvertisementBaseSerializer.Meta):
"""Meta class."""
fields = AdvertisementBaseSerializer.Meta.fields + [
'page',
]