from rest_framework import serializers from recipe.models import Recipe from utils.legacy_parser import parse_legacy_news_content class RecipeSerializer(serializers.ModelSerializer): locale = serializers.CharField() body = serializers.CharField(allow_null=True) title = serializers.CharField() state = serializers.CharField() created_at = serializers.DateTimeField(source="published_at", format='%m-%d-%Y %H:%M:%S') class Meta: model = Recipe fields = ( "body", "title", "state", "created_at", 'locale', ) def validate(self, data): data["state"] = self.get_state(data) data["title"] = self.get_title(data) data["description"] = self.get_description(data) data.pop("body") data.pop("locale") return data def create(self, validated_data): return Recipe.objects.create(**validated_data) def get_state(self, obj): if obj["state"] == "published": return Recipe.PUBLISHED elif obj["state"] == "hidden": return Recipe.HIDDEN elif obj["state"] == "published_exclusive": return Recipe.PUBLISHED_EXCLUSIVE else: return Recipe.WAITING def get_title(self, obj): # tit = obj.get("title") # return {"en-GB": tit} return {obj['locale']: obj['title']} def get_description(self, obj): # desc = obj.get("body") # return {"en-GB": desc} content = None if obj['body']: content = parse_legacy_news_content(obj['body']) return {obj['locale']: content}