from rest_framework import serializers from news.models import News from uuid import uuid4 import datetime from django.conf import settings class NewsSerializer(serializers.ModelSerializer): image_url = serializers.SerializerMethodField() preview_image_url = serializers.SerializerMethodField() description = serializers.SerializerMethodField() title = serializers.SerializerMethodField() template = serializers.SerializerMethodField() state = serializers.CharField() created_at = serializers.DateTimeField(source="start", format='%m-%d-%Y %H:%M:%S') class Meta: model = News fields = ( "created_at", "state", "template", "image_url", "preview_image_url", "title", "description", "slug", "news_type", "playlist" ) def create(self, validated_data): validated_data['state'] = self.get_state(validated_data) return News.objects.create(**validated_data) def get_template(self, obj): if obj.template == "main": return News.MAIN elif obj.template == "main.pdf.erb": return News.MAIN_PDF_ERB else: return News.NEWSPAPER def get_state(self, obj): if obj.state == "published": return News.PUBLISHED elif obj.state == "hidden": return News.HIDDEN elif obj.state == "published_exclusive": return News.PUBLISHED_EXCLUSIVE else: return News.WAITING # django.db.utils.IntegrityError: "start" NOT NULL # def get_start(self, obj): # # return obj.created_at # return datetime.datetime.now().isoformat() def get_title(self, obj): return f'{"en-GB": {obj.title}}' def get_description(self, obj): if not hasattr(obj, "body"): return "" else: return obj.body def get_image_url(self, obj): if not hasattr(obj, "attachment_file_name") or obj.attachment_file_name is None: return "" return obj.attachment_file_name def get_preview_image_url(self, obj): if not hasattr(obj, "attachment_file_name") or obj.attachment_file_name is None: return "" return obj.attachment_file_name