From 50434620959502ff982d7a66a0f3919f18db664a Mon Sep 17 00:00:00 2001 From: michail Date: Tue, 22 Oct 2019 17:11:45 +0500 Subject: [PATCH] prototype --- apps/transfer/serializers/news.py | 95 +++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 24 deletions(-) diff --git a/apps/transfer/serializers/news.py b/apps/transfer/serializers/news.py index a9d53cb8..2d85bea1 100644 --- a/apps/transfer/serializers/news.py +++ b/apps/transfer/serializers/news.py @@ -6,12 +6,14 @@ 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.IntegerField(source="state") + # image_url = serializers.CharField() + # preview_image_url = serializers.CharField() + attachment_file_name = serializers.CharField(allow_null=True) + # body = serializers.CharField(allow_null=True, source="description") + body = serializers.CharField(allow_null=True) + title = serializers.CharField() + template = serializers.CharField() + state = serializers.CharField() created_at = serializers.DateTimeField(source="start", format='%m-%d-%Y %H:%M:%S') class Meta: @@ -20,57 +22,102 @@ class NewsSerializer(serializers.ModelSerializer): "created_at", "state", "template", - "image_url", - "preview_image_url", + # "image_url", + # "preview_image_url", + "attachment_file_name", "title", - "description", + "body", "slug", "news_type", "playlist" ) + def validate(self, data): + data["state"] = self.get_state(data) + data["template"] = self.get_template(data) + data["title"] = self.get_title(data) + data["description"] = self.get_description(data) + data["image_url"] = self.get_image_url(data) + data["preview_image_url"] = self.get_preview_image_url(data) + data.pop("attachment_file_name") + data.pop("body") + return data + def create(self, validated_data): - validated_data['state'] = self.get_state(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": + if obj["template"] == "main": return News.MAIN - elif obj.template == "main.pdf.erb": + elif obj["template"] == "main.pdf.erb": return News.MAIN_PDF_ERB else: return News.NEWSPAPER + # 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": + if obj["state"] == "published": return News.PUBLISHED - elif obj.state == "hidden": + elif obj["state"] == "hidden": return News.HIDDEN - elif obj.state == "published_exclusive": + elif obj["state"] == "published_exclusive": return News.PUBLISHED_EXCLUSIVE else: return News.WAITING + # 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}}' + tit = obj.get("title") + return {"en-GB": tit} + # return f'{"en-GB": {obj.title}}' def get_description(self, obj): - if not hasattr(obj, "body"): - return "" - else: - return obj.body + # return {"en-GB": {obj["body"]}} + desc = obj.get("body") + return {"en-GB": desc} + # 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: + if not obj.get("attachment_file_name"): return "" - return obj.attachment_file_name + + if len(obj.get("attachment_file_name"))>200: + return obj.get("attachment_file_name")[:200] + return obj.get("attachment_file_name") + # 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: + if not obj.get("attachment_file_name"): return "" - return obj.attachment_file_name + + if len(obj.get("attachment_file_name"))>200: + return obj.get("attachment_file_name")[:200] + return obj.get("attachment_file_name") + # if not hasattr(obj, "attachment_file_name") or obj.attachment_file_name is None: + # return "" + # return obj.attachment_file_name