added transfer for recipe app

This commit is contained in:
michail 2019-10-23 14:42:08 +05:00
parent 8d0f4a8a00
commit 6c9ddfbc98
3 changed files with 67 additions and 1 deletions

View File

@ -0,0 +1,19 @@
from django.db.models import Value, IntegerField, F
from pprint import pprint
from transfer.models import PageTexts
from transfer.serializers.recipe import RecipeSerializer
def transfer_recipe():
queryset = PageTexts.objects.filter(page__type="Recipe")
serialized_data = RecipeSerializer(data=list(queryset.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"News serializer errors: {serialized_data.errors}")
data_types = {
"recipe": [transfer_recipe]
}

View File

@ -12,7 +12,8 @@ class Command(BaseCommand):
'dictionaries',
'news',
'account',
'subscriber'
'subscriber',
'recipe'
]
def handle(self, *args, **options):

View File

@ -0,0 +1,46 @@
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}