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 establishment.models import Establishment
from partner.models import Partner
from transfer.models import EstablishmentBacklinks
from transfer.serializers.partner import PartnerSerializer
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)
queryset = EstablishmentBacklinks.objects.filter(
establishment_id__in=list(establishments),
@ -24,6 +28,7 @@ def transfer_partner():
serialized_data = PartnerSerializer(data=list(queryset), many=True)
if serialized_data.is_valid():
Partner.objects.all().delete() # TODO: закоментить, если требуется сохранить старые записи
serialized_data.save()
else:
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.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():
@ -50,8 +39,8 @@ def transfer_wine_bottles_produced():
)
queryset = [vars(query) for query in raw_queryset]
serialized_data = product_serializers.WineBottlesProducedSerializer(
data=queryset,
many=True)
data=queryset,
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -69,8 +58,8 @@ def transfer_wine_classification_type():
)
queryset = [vars(query) for query in raw_queryset]
serialized_data = product_serializers.WineClassificationTypeSerializer(
data=queryset,
many=True)
data=queryset,
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -79,10 +68,10 @@ def transfer_wine_classification_type():
def transfer_wine_standard():
queryset = transfer_models.ProductClassification.objects.filter(parent_id__isnull=True) \
.exclude(type='Classification')
.exclude(type='Classification')
serialized_data = product_serializers.ProductStandardSerializer(
data=list(queryset.values()),
many=True)
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -92,8 +81,8 @@ def transfer_wine_standard():
def transfer_wine_classifications():
queryset = transfer_models.ProductClassification.objects.filter(type='Classification')
serialized_data = product_serializers.ProductClassificationSerializer(
data=list(queryset.values()),
many=True)
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -104,8 +93,8 @@ def transfer_product():
errors = []
queryset = transfer_models.Products.objects.all()
serialized_data = product_serializers.ProductSerializer(
data=list(queryset.values()),
many=True)
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -117,8 +106,8 @@ def transfer_product_note():
errors = []
queryset = transfer_models.ProductNotes.objects.exclude(text='')
serialized_data = product_serializers.ProductNoteSerializer(
data=list(queryset.values()),
many=True)
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -130,8 +119,8 @@ def transfer_plate():
errors = []
queryset = transfer_models.Merchandise.objects.all()
serialized_data = product_serializers.PlateSerializer(
data=list(queryset.values()),
many=True)
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -143,8 +132,8 @@ def transfer_plate_image():
errors = []
queryset = transfer_models.Merchandise.objects.all()
serialized_data = product_serializers.PlateImageSerializer(
data=list(queryset.values()),
many=True)
data=list(queryset.values()),
many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
@ -153,7 +142,6 @@ def transfer_plate_image():
data_types = {
"partner": [transfer_partner],
"wine_characteristics": [
transfer_wine_sugar_content,
transfer_wine_color,
@ -161,12 +149,12 @@ data_types = {
transfer_wine_classification_type,
transfer_wine_standard,
transfer_wine_classifications,
],
],
"product": [
transfer_product,
],
"product_note": [
transfer_product_note,
transfer_product_note,
],
"souvenir": [
transfer_plate,

View File

@ -1,29 +1,53 @@
from rest_framework import serializers
from establishment.models import Establishment
from partner.models import Partner
class PartnerSerializer(serializers.Serializer):
pass
# 'id',
# 'establishment_id',
# 'partnership_name',
# 'partnership_icon',
# 'backlink_url',
# 'created_at',
# 'type',
# 'starting_date',
# 'expiry_date',
# 'price_per_month',
id = serializers.IntegerField()
establishment_id = serializers.IntegerField()
partnership_name = serializers.CharField(allow_null=True)
partnership_icon = serializers.CharField(allow_null=True)
backlink_url = serializers.CharField(allow_null=True)
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
type = serializers.CharField(allow_null=True)
starting_date = serializers.DateField(allow_null=True)
expiry_date = serializers.DateField(allow_null=True)
price_per_month = serializers.DecimalField(max_digits=10, decimal_places=2, allow_null=True)
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):
# data["image"] = partnership_to_image_url.get(data["partnership_name"]).get(data["partnership_icon"])
# data.pop("partnership_name")
# data.pop("partnership_icon")
# return data
#
# def create(self, validated_data):
# return Partner.objects.create(**validated_data)
@staticmethod
def get_image(data):
return partnership_to_image_url.get(data['partnership_name']).get(data['partnership_icon'])
@staticmethod
def get_establishment(data):
establishment = Establishment.objects.filter(old_id=data['establishment_id']).first()
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 = {