added transfer for recipe app
This commit is contained in:
parent
8d0f4a8a00
commit
6c9ddfbc98
19
apps/recipe/transfer_data.py
Normal file
19
apps/recipe/transfer_data.py
Normal 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]
|
||||||
|
}
|
||||||
|
|
@ -12,7 +12,8 @@ class Command(BaseCommand):
|
||||||
'dictionaries',
|
'dictionaries',
|
||||||
'news',
|
'news',
|
||||||
'account',
|
'account',
|
||||||
'subscriber'
|
'subscriber',
|
||||||
|
'recipe'
|
||||||
]
|
]
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
|
|
|
||||||
46
apps/transfer/serializers/recipe.py
Normal file
46
apps/transfer/serializers/recipe.py
Normal 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}
|
||||||
Loading…
Reference in New Issue
Block a user