79 lines
2.1 KiB
Python
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'
|
|
]
|