77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
"""News app common serializers."""
|
|
from rest_framework import serializers
|
|
from gallery import models as gallery_models
|
|
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 NewsSerializer(serializers.ModelSerializer):
|
|
"""News serializer."""
|
|
|
|
address = AddressSerializer()
|
|
title_translated = serializers.CharField(read_only=True, allow_null=True)
|
|
subtitle_translated = serializers.CharField(read_only=True, allow_null=True)
|
|
description_translated = serializers.CharField(read_only=True, allow_null=True)
|
|
image_url = serializers.ImageField(source='image.image', allow_null=True)
|
|
|
|
class Meta:
|
|
model = models.News
|
|
fields = [
|
|
'id',
|
|
'news_type',
|
|
'start',
|
|
'end',
|
|
'playlist',
|
|
'address',
|
|
'is_highlighted',
|
|
'image_url',
|
|
# Localized fields
|
|
'title_translated',
|
|
'subtitle_translated',
|
|
'description_translated',
|
|
]
|
|
|
|
|
|
class NewsCreateUpdateSerializer(NewsSerializer):
|
|
"""News update serializer."""
|
|
title = serializers.JSONField()
|
|
subtitle = serializers.JSONField()
|
|
description = serializers.JSONField()
|
|
image = serializers.PrimaryKeyRelatedField(
|
|
queryset=gallery_models.Image.objects.all(), 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'
|
|
]
|