gault-millau/apps/recipe/transfer_data.py
2019-12-17 11:54:50 +03:00

50 lines
1.3 KiB
Python

from pprint import pprint
from django.db.models import Count
from recipe.models import Recipe
from transfer.models import PageTexts
from transfer.serializers.recipe import RecipeSerializer
def transfer_recipe():
queryset = PageTexts.objects.filter(
page__type='Recipe',
).values(
'id',
'title',
'summary',
'body',
'locale',
'state',
'slug',
'created_at',
'page__attachment_suffix_url',
'page__account_id',
)
serialized_data = RecipeSerializer(data=list(queryset), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f'Recipe serializer errors: {serialized_data.errors}')
return
# Удаление дубликатов рецептов по одинаковым description
duplicate_descriptions = Recipe.objects.values(
'description'
).annotate(
description_count=Count('description')
).filter(
description_count__gt=1
)
for data in duplicate_descriptions:
description = data['description']
_list = list(Recipe.objects.filter(description=description).values_list('pk', flat=True)[1:])
Recipe.objects.filter(id__in=_list).delete()
data_types = {
'recipe': [transfer_recipe]
}