77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
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.SerializerMethodField()
|
|
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
|