51 lines
1.5 KiB
Python
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'))
|