migrate inquiry photos

This commit is contained in:
alex 2019-11-12 08:40:42 +03:00
parent 60c62eb84a
commit b5c255f7fb
5 changed files with 95 additions and 2 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.7 on 2019-11-12 05:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('review', '0012_griditems_old_id'),
]
operations = [
migrations.AddField(
model_name='inquiriesgallery',
name='old_id',
field=models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='old id'),
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 2.2.7 on 2019-11-12 05:38
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('review', '0013_inquiriesgallery_old_id'),
]
operations = [
migrations.AlterUniqueTogether(
name='inquiriesgallery',
unique_together=set(),
),
]

View File

@ -141,6 +141,7 @@ class InquiriesGalleryQuerySet(models.QuerySet):
class InquiriesGallery(models.Model):
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
inquiry = models.ForeignKey(
Inquiries,
null=True,
@ -162,4 +163,3 @@ class InquiriesGallery(models.Model):
class Meta:
verbose_name = _('inquiry gallery')
verbose_name_plural = _('inquiry galleries')
unique_together = (('inquiry', 'is_main'), ('inquiry', 'image'))

View File

@ -5,9 +5,10 @@ from django.db.models import Q
from account.transfer_data import STOP_LIST
from review.models import Inquiries as NewInquiries, Review
from transfer.models import Reviews, ReviewTexts, Inquiries, GridItems
from transfer.models import Reviews, ReviewTexts, Inquiries, GridItems, InquiryPhotos
from transfer.serializers.grid import GridItemsSerializer
from transfer.serializers.inquiries import InquiriesSerializer
from transfer.serializers.inquiry_gallery import InquiryGallerySerializer
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
@ -125,6 +126,17 @@ def transfer_grid():
pprint(f"GridItems serializer errors: {serialized_data.errors}")
def transfer_inquiry_photos():
inquiries = NewInquiries.objects.all().values_list('old_id', flat=True)
grids = InquiryPhotos.objects.filter(inquiry_id__in=list(inquiries), attachment_suffix_url__isnull=False)
serialized_data = InquiryGallerySerializer(data=list(grids.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"InquiryGallery serializer errors: {serialized_data.errors}")
data_types = {
"overlook": [
transfer_languages,
@ -133,5 +145,6 @@ data_types = {
'inquiries': [
transfer_inquiries,
transfer_grid,
transfer_inquiry_photos,
]
}

View File

@ -0,0 +1,45 @@
from django.db import transaction
from rest_framework import serializers
from gallery.models import Image
from review.models import Inquiries, InquiriesGallery
class InquiryGallerySerializer(serializers.Serializer):
id = serializers.IntegerField()
inquiry_id = serializers.IntegerField()
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
attachment_file_name = serializers.CharField()
attachment_suffix_url = serializers.CharField()
def validate(self, data):
data.update({
'image': {
'image': data.pop('attachment_suffix_url'),
'title': data.pop('attachment_file_name'),
'created': data.pop('created_at'),
},
'gallery': {
'old_id': data.pop('id'),
'inquiry': self.get_inquiry(data),
},
})
data.pop('inquiry_id')
return data
def create(self, validated_data):
try:
with transaction.atomic():
img = Image.objects.create(**validated_data['image'])
gal = InquiriesGallery.objects.create(image=img, **validated_data['gallery'])
except Exception as e:
raise ValueError(f"Error creating InquiriesGallery with {validated_data}: {e}")
else:
return gal
@staticmethod
def get_inquiry(data):
inquiry = Inquiries.objects.filter(old_id=data['inquiry_id']).first()
if not inquiry:
raise ValueError(f"Inquiries not found with old_id {data['inquiry_id']}")
return inquiry