54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
from pprint import pprint
|
|
|
|
from establishment.models import Establishment
|
|
from partner.models import Partner, PartnerToEstablishment
|
|
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),
|
|
).values(
|
|
'id',
|
|
'establishment_id',
|
|
'partnership_name',
|
|
'partnership_icon',
|
|
'backlink_url',
|
|
'created_at',
|
|
'type',
|
|
'starting_date',
|
|
'expiry_date',
|
|
'price_per_month',
|
|
)
|
|
|
|
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}")
|
|
|
|
# here we manually delete duplicates
|
|
partners_to_remove_ids = []
|
|
for partner_establishment_proxy in PartnerToEstablishment.objects.all():
|
|
related_partner = partner_establishment_proxy.partner
|
|
actual_partner = Partner.objects.filter(type=related_partner.type,
|
|
url=related_partner.url,
|
|
name=related_partner.name).first() # exists for sure
|
|
if related_partner.pk != actual_partner.pk:
|
|
partners_to_remove_ids.append(related_partner.pk)
|
|
partner_establishment_proxy.partner = actual_partner
|
|
partner_establishment_proxy.save()
|
|
|
|
Partner.objects.filter(id__in=partners_to_remove_ids).delete()
|
|
|
|
|
|
data_types = {
|
|
"partner": [transfer_partner]
|
|
}
|