gault-millau/apps/news/serializers/common.py
2019-08-19 13:01:59 +03:00

71 lines
1.8 KiB
Python

from rest_framework import serializers
from location.models import Address
from location.serializers import AddressSerializer
from news import models
class NewsTypeSerializer(serializers.ModelSerializer):
"""News type serializer."""
class Meta:
model = models.NewsType
fields = [
'id',
'name'
]
class NewsLocalizationMixinSerializer(serializers.ModelSerializer):
"""Serializer for localized fields"""
# Localized fields
title_trans = serializers.CharField(read_only=True)
subtitle_trans = serializers.CharField(read_only=True)
description_trans = serializers.CharField(read_only=True)
class NewsSerializer(NewsLocalizationMixinSerializer):
"""News serializer."""
address = AddressSerializer()
class Meta:
model = models.News
fields = [
'id',
'news_type',
'start',
'end',
'playlist',
'address',
# Localized fields
'title_trans',
'subtitle_trans',
'description_trans',
]
class NewsCreateUpdateSerializer(NewsSerializer):
"""News update serializer."""
title = serializers.JSONField()
subtitle = serializers.JSONField()
description = serializers.JSONField()
news_type = serializers.PrimaryKeyRelatedField(
queryset=models.NewsType.objects.all(), write_only=True)
address = serializers.PrimaryKeyRelatedField(
queryset=Address.objects.all(), write_only=True)
class Meta:
model = models.News
read_only_fields = [
'id'
]
fields = [
'id',
'news_type',
'title',
'subtitle',
'description',
'start',
'end',
'playlist',
'address'
]