from rest_framework import serializers from recipe.models import Recipe class RecipeSerializer(serializers.ModelSerializer): 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" ) 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") 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} def get_description(self, obj): desc = obj.get("body") return {"en-GB": desc}