"""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' ]