gault-millau/apps/advertisement/serializers/common.py
2019-12-11 12:26:32 +03:00

51 lines
1.5 KiB
Python

"""Serializers for app advertisements"""
from rest_framework import serializers
from advertisement import models
from main.models import SiteSettings
from main.serializers import PageTypeBaseSerializer
from translation.models import Language
class AdvertisementBaseSerializer(serializers.ModelSerializer):
"""Base serializer for model Advertisement."""
page_type_detail = PageTypeBaseSerializer(read_only=True,
source='page_type')
target_languages = serializers.PrimaryKeyRelatedField(
queryset=Language.objects.all(),
many=True,
write_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',
'target_languages',
'target_sites',
'start',
'end',
'page_type',
'page_type_detail',
]
extra_kwargs = {
'page_type': {'required': True, 'write_only': True}
}
class AdvertisementSerializer(AdvertisementBaseSerializer):
"""Serializer for model Advertisement."""
class Meta(AdvertisementBaseSerializer.Meta):
"""Meta class."""
fields = AdvertisementBaseSerializer.Meta.fields.copy()
fields.pop(fields.index('page_type_detail'))