transfer partner

This commit is contained in:
alex 2019-11-21 16:45:27 +03:00
parent 8e215b2555
commit 86e29173ba
3 changed files with 67 additions and 50 deletions

View File

@ -1,11 +1,15 @@
from pprint import pprint from pprint import pprint
from establishment.models import Establishment from establishment.models import Establishment
from partner.models import Partner
from transfer.models import EstablishmentBacklinks from transfer.models import EstablishmentBacklinks
from transfer.serializers.partner import PartnerSerializer from transfer.serializers.partner import PartnerSerializer
def transfer_partner(): def transfer_partner():
"""
Transfer data to Partner model only after transfer Establishment
"""
establishments = Establishment.objects.filter(old_id__isnull=False).values_list('old_id', flat=True) establishments = Establishment.objects.filter(old_id__isnull=False).values_list('old_id', flat=True)
queryset = EstablishmentBacklinks.objects.filter( queryset = EstablishmentBacklinks.objects.filter(
establishment_id__in=list(establishments), establishment_id__in=list(establishments),
@ -24,6 +28,7 @@ def transfer_partner():
serialized_data = PartnerSerializer(data=list(queryset), many=True) serialized_data = PartnerSerializer(data=list(queryset), many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
Partner.objects.all().delete() # TODO: закоментить, если требуется сохранить старые записи
serialized_data.save() serialized_data.save()
else: else:
pprint(f"Partner serializer errors: {serialized_data.errors}") pprint(f"Partner serializer errors: {serialized_data.errors}")

View File

@ -2,17 +2,6 @@ from pprint import pprint
from transfer import models as transfer_models from transfer import models as transfer_models
from transfer.serializers import product as product_serializers from transfer.serializers import product as product_serializers
from transfer.serializers.partner import PartnerSerializer
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(): def transfer_wine_color():
@ -50,8 +39,8 @@ def transfer_wine_bottles_produced():
) )
queryset = [vars(query) for query in raw_queryset] queryset = [vars(query) for query in raw_queryset]
serialized_data = product_serializers.WineBottlesProducedSerializer( serialized_data = product_serializers.WineBottlesProducedSerializer(
data=queryset, data=queryset,
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -69,8 +58,8 @@ def transfer_wine_classification_type():
) )
queryset = [vars(query) for query in raw_queryset] queryset = [vars(query) for query in raw_queryset]
serialized_data = product_serializers.WineClassificationTypeSerializer( serialized_data = product_serializers.WineClassificationTypeSerializer(
data=queryset, data=queryset,
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -79,10 +68,10 @@ def transfer_wine_classification_type():
def transfer_wine_standard(): def transfer_wine_standard():
queryset = transfer_models.ProductClassification.objects.filter(parent_id__isnull=True) \ queryset = transfer_models.ProductClassification.objects.filter(parent_id__isnull=True) \
.exclude(type='Classification') .exclude(type='Classification')
serialized_data = product_serializers.ProductStandardSerializer( serialized_data = product_serializers.ProductStandardSerializer(
data=list(queryset.values()), data=list(queryset.values()),
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -92,8 +81,8 @@ def transfer_wine_standard():
def transfer_wine_classifications(): def transfer_wine_classifications():
queryset = transfer_models.ProductClassification.objects.filter(type='Classification') queryset = transfer_models.ProductClassification.objects.filter(type='Classification')
serialized_data = product_serializers.ProductClassificationSerializer( serialized_data = product_serializers.ProductClassificationSerializer(
data=list(queryset.values()), data=list(queryset.values()),
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -104,8 +93,8 @@ def transfer_product():
errors = [] errors = []
queryset = transfer_models.Products.objects.all() queryset = transfer_models.Products.objects.all()
serialized_data = product_serializers.ProductSerializer( serialized_data = product_serializers.ProductSerializer(
data=list(queryset.values()), data=list(queryset.values()),
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -117,8 +106,8 @@ def transfer_product_note():
errors = [] errors = []
queryset = transfer_models.ProductNotes.objects.exclude(text='') queryset = transfer_models.ProductNotes.objects.exclude(text='')
serialized_data = product_serializers.ProductNoteSerializer( serialized_data = product_serializers.ProductNoteSerializer(
data=list(queryset.values()), data=list(queryset.values()),
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -130,8 +119,8 @@ def transfer_plate():
errors = [] errors = []
queryset = transfer_models.Merchandise.objects.all() queryset = transfer_models.Merchandise.objects.all()
serialized_data = product_serializers.PlateSerializer( serialized_data = product_serializers.PlateSerializer(
data=list(queryset.values()), data=list(queryset.values()),
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -143,8 +132,8 @@ def transfer_plate_image():
errors = [] errors = []
queryset = transfer_models.Merchandise.objects.all() queryset = transfer_models.Merchandise.objects.all()
serialized_data = product_serializers.PlateImageSerializer( serialized_data = product_serializers.PlateImageSerializer(
data=list(queryset.values()), data=list(queryset.values()),
many=True) many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -153,7 +142,6 @@ def transfer_plate_image():
data_types = { data_types = {
"partner": [transfer_partner],
"wine_characteristics": [ "wine_characteristics": [
transfer_wine_sugar_content, transfer_wine_sugar_content,
transfer_wine_color, transfer_wine_color,
@ -161,12 +149,12 @@ data_types = {
transfer_wine_classification_type, transfer_wine_classification_type,
transfer_wine_standard, transfer_wine_standard,
transfer_wine_classifications, transfer_wine_classifications,
], ],
"product": [ "product": [
transfer_product, transfer_product,
], ],
"product_note": [ "product_note": [
transfer_product_note, transfer_product_note,
], ],
"souvenir": [ "souvenir": [
transfer_plate, transfer_plate,

View File

@ -1,29 +1,53 @@
from rest_framework import serializers from rest_framework import serializers
from establishment.models import Establishment
from partner.models import Partner from partner.models import Partner
class PartnerSerializer(serializers.Serializer): class PartnerSerializer(serializers.Serializer):
pass id = serializers.IntegerField()
# 'id', establishment_id = serializers.IntegerField()
# 'establishment_id', partnership_name = serializers.CharField(allow_null=True)
# 'partnership_name', partnership_icon = serializers.CharField(allow_null=True)
# 'partnership_icon', backlink_url = serializers.CharField(allow_null=True)
# 'backlink_url', created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
# 'created_at', type = serializers.CharField(allow_null=True)
# 'type', starting_date = serializers.DateField(allow_null=True)
# 'starting_date', expiry_date = serializers.DateField(allow_null=True)
# 'expiry_date', price_per_month = serializers.DecimalField(max_digits=10, decimal_places=2, allow_null=True)
# 'price_per_month',
def validate(self, data):
data.update({
'old_id': data.pop('id'),
'name': data['partnership_name'],
'url': data.pop('backlink_url'),
'image': self.get_image(data),
'establishment': self.get_establishment(data),
'type': Partner.PARTNER if data['type'] == 'Partner' else Partner.SPONSOR,
'created': data.pop('created_at'),
})
data.pop('partnership_icon')
data.pop('partnership_name')
data.pop('establishment_id')
return data
# def validate(self, data): @staticmethod
# data["image"] = partnership_to_image_url.get(data["partnership_name"]).get(data["partnership_icon"]) def get_image(data):
# data.pop("partnership_name") return partnership_to_image_url.get(data['partnership_name']).get(data['partnership_icon'])
# data.pop("partnership_icon")
# return data @staticmethod
# def get_establishment(data):
# def create(self, validated_data): establishment = Establishment.objects.filter(old_id=data['establishment_id']).first()
# return Partner.objects.create(**validated_data) if not establishment:
raise ValueError(f"Establishment not found with old_id {data['establishment_id']}: ")
return establishment
def create(self, validated_data):
obj, _ = Partner.objects.update_or_create(
old_id=validated_data['old_id'],
defaults=validated_data,
)
return obj
partnership_to_image_url = { partnership_to_image_url = {