gault-millau/apps/product/transfer_data.py
2019-11-07 19:03:12 +03:00

138 lines
4.2 KiB
Python

from pprint import pprint
from django.conf import settings
from tag.models import TagCategory
from transfer import models as transfer_models
from transfer.serializers.partner import PartnerSerializer
from transfer.serializers import product as product_serializers
def transfer_partner():
queryset = transfer_models.EstablishmentBacklinks.objects.filter(type="Partner")
serialized_data = PartnerSerializer(data=list(queryset.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"News serializer errors: {serialized_data.errors}")
def transfer_wine_color():
wine_color_index_name = 'wine_color'
TagCategory.objects.get_or_create(
index_name=wine_color_index_name,
defaults={
'label': {settings.FALLBACK_LOCALE: wine_color_index_name},
'value_type': TagCategory.STRING,
'index_name': wine_color_index_name,
'public': True
})
queryset = transfer_models.WineColor.objects.all()
serialized_data = product_serializers.WineColorSerializer(
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"WineColorSerializer errors: {serialized_data.errors}")
def transfer_wine_bottles_produced():
bottles_produced_index_name = 'bottles_produced'
TagCategory.objects.get_or_create(
index_name=bottles_produced_index_name,
defaults={
'label': {settings.FALLBACK_LOCALE: bottles_produced_index_name},
'value_type': TagCategory.STRING,
'index_name': bottles_produced_index_name,
'public': True
})
raw_queryset = transfer_models.Products.objects.raw(
"""
SELECT
DISTINCT bottles_produced,
1 as id
FROM products
WHERE bottles_produced IS NOT NULL
AND bottles_produced !='';
"""
)
queryset = [vars(query) for query in raw_queryset]
serialized_data = product_serializers.BottlesProducedSerializer(
data=queryset,
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"transfer_wine_bottles_produced errors: {serialized_data.errors}")
def transfer_wine_standard():
queryset = transfer_models.WineClassification.objects.filter(parent_id__isnull=True)
serialized_data = product_serializers.WineStandardSerializer(
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"transfer_wine_standard errors: {serialized_data.errors}")
def transfer_wine_classifications():
queryset = transfer_models.WineClassification.objects.filter(parent_id__isnull=False)
serialized_data = product_serializers.WineStandardClassificationSerializer(
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"transfer_wine_classifications errors: {serialized_data.errors}")
def transfer_product_brand():
raw_queryset = transfer_models.Products.objects.raw(
"""
SELECT
DISTINCT brand,
1 as id
FROM products
WHERE brand IS NOT NULL
AND brand !='';
"""
)
queryset = [vars(query) for query in raw_queryset]
serialized_data = product_serializers.ProductBrandSerializer(
data=queryset,
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"transfer_product_brand errors: {serialized_data.errors}")
def transfer_product():
queryset = transfer_models.Products.objects.all()
serialized_data = product_serializers.ProductSerializer(
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"transfer_product errors: {serialized_data.errors}")
data_types = {
"partner": [transfer_partner],
"wine_characteristics": [
transfer_wine_color,
transfer_wine_bottles_produced,
transfer_wine_standard,
transfer_wine_classifications],
"product": [
transfer_product_brand,
transfer_product
],
}