gault-millau/apps/transfer/serializers/news.py
2019-10-21 17:22:28 +03:00

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