gault-millau/apps/news/serializers/common.py
2019-08-27 18:58:40 +03:00

79 lines
2.1 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()
image = serializers.URLField(source='image.get_image_url')
class Meta:
model = models.News
fields = [
'id',
'news_type',
'start',
'end',
'playlist',
'address',
'is_highlighted',
'image',
# Localized fields
'title_trans',
'subtitle_trans',
'description_trans',
]
class NewsCreateUpdateSerializer(NewsSerializer):
"""News update serializer."""
title = serializers.JSONField()
subtitle = serializers.JSONField()
description = serializers.JSONField()
image = serializers.ImageField(required=True)
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',
'image',
'is_publish',
'country'
]