fix guide element label photo
This commit is contained in:
parent
5d69f2a5e7
commit
54eee9565c
27
apps/collection/migrations/0027_auto_20191218_0753.py
Normal file
27
apps/collection/migrations/0027_auto_20191218_0753.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Generated by Django 2.2.7 on 2019-12-18 07:53
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('gallery', '0007_auto_20191211_1528'),
|
||||
('collection', '0026_merge_20191217_1151'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='advertorial',
|
||||
name='gallery',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='guideelement',
|
||||
name='label_photo',
|
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='gallery.Image', verbose_name='label photo'),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='AdvertorialGallery',
|
||||
),
|
||||
]
|
||||
|
|
@ -227,7 +227,7 @@ class AdvertorialQuerySet(models.QuerySet):
|
|||
"""QuerySet for model Advertorial."""
|
||||
|
||||
|
||||
class Advertorial(GalleryModelMixin, ProjectBaseMixin):
|
||||
class Advertorial(ProjectBaseMixin):
|
||||
"""Guide advertorial model."""
|
||||
number_of_pages = models.PositiveIntegerField(
|
||||
verbose_name=_('number of pages'),
|
||||
|
|
@ -239,7 +239,6 @@ class Advertorial(GalleryModelMixin, ProjectBaseMixin):
|
|||
related_name='advertorial',
|
||||
verbose_name=_('guide element'))
|
||||
old_id = models.IntegerField(blank=True, null=True)
|
||||
gallery = models.ManyToManyField('gallery.Image', through='AdvertorialGallery')
|
||||
|
||||
objects = AdvertorialQuerySet.as_manager()
|
||||
|
||||
|
|
@ -249,24 +248,6 @@ class Advertorial(GalleryModelMixin, ProjectBaseMixin):
|
|||
verbose_name_plural = _('advertorials')
|
||||
|
||||
|
||||
class AdvertorialGallery(IntermediateGalleryModelMixin):
|
||||
"""Advertorial gallery model."""
|
||||
advertorial = models.ForeignKey(Advertorial, null=True,
|
||||
related_name='advertorial_gallery',
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name=_('advertorial'))
|
||||
image = models.ForeignKey('gallery.Image', null=True,
|
||||
related_name='advertorial_gallery',
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name=_('image'))
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
verbose_name = _('advertorial gallery')
|
||||
verbose_name_plural = _('advertorial galleries')
|
||||
unique_together = (('advertorial', 'image'), )
|
||||
|
||||
|
||||
class GuideFilterQuerySet(models.QuerySet):
|
||||
"""QuerySet for model GuideFilter."""
|
||||
|
||||
|
|
@ -411,6 +392,9 @@ class GuideElement(ProjectBaseMixin, MPTTModel):
|
|||
parent = TreeForeignKey('self', on_delete=models.CASCADE,
|
||||
null=True, blank=True,
|
||||
related_name='children')
|
||||
label_photo = models.ForeignKey('gallery.Image', on_delete=models.SET_NULL,
|
||||
null=True, blank=True, default=None,
|
||||
verbose_name=_('label photo'))
|
||||
old_id = models.PositiveIntegerField(blank=True, null=True, default=None,
|
||||
verbose_name=_('old id'))
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from tqdm import tqdm
|
|||
|
||||
from collection.models import GuideElementSection, GuideElementSectionCategory, \
|
||||
GuideWineColorSection, GuideElementType, GuideElement, \
|
||||
Guide, Advertorial, AdvertorialGallery
|
||||
Guide, Advertorial
|
||||
from establishment.models import Establishment
|
||||
from gallery.models import Image
|
||||
from location.models import WineRegion, City
|
||||
|
|
@ -13,6 +13,7 @@ from review.models import Review
|
|||
from transfer.models import Guides, GuideFilters, GuideSections, GuideElements, \
|
||||
GuideAds, LabelPhotos
|
||||
from transfer.serializers.guide import GuideSerializer, GuideFilterSerializer
|
||||
from django.db.models import Subquery
|
||||
|
||||
|
||||
def transfer_guide():
|
||||
|
|
@ -255,7 +256,7 @@ def transfer_guide_element_advertorials():
|
|||
qs = GuideElement.objects.filter(old_id=old_id)
|
||||
legacy_qs = GuideElements.objects.exclude(guide__isnull=True) \
|
||||
.exclude(guide__title__icontains='test') \
|
||||
.filter(id=guide_ad_node_id)
|
||||
.filter(id=old_id)
|
||||
if qs.exists() and legacy_qs.exists():
|
||||
return qs.first()
|
||||
elif legacy_qs.exists() and not qs.exists():
|
||||
|
|
@ -288,40 +289,53 @@ def transfer_guide_element_advertorials():
|
|||
print(f'COUNT OF CREATED OBJECTS: {len(objects_to_update)}')
|
||||
|
||||
|
||||
def transfer_guide_element_advertorial_galleries():
|
||||
def transfer_guide_element_label_photo():
|
||||
"""Transfer galleries for Guide Advertorial model."""
|
||||
def get_guide_element_advertorial(old_id: int):
|
||||
if old_id:
|
||||
qs = Advertorial.objects.filter(old_id=old_id)
|
||||
legacy_qs = GuideAds.objects.filter(id=old_id)
|
||||
if qs.exists() and legacy_qs.exists():
|
||||
return qs.first()
|
||||
elif legacy_qs.exists() and not qs.exists():
|
||||
raise ValueError(f'Guide element advertorials was not transfer correctly - {old_id}.')
|
||||
def get_guide_element(guide_ad):
|
||||
legacy_guide_element_id = guide_ad.guide_ad_node.id
|
||||
|
||||
created_counter = 0
|
||||
gallery_obj_exists_counter = 0
|
||||
advertorial_galleries = LabelPhotos.objects.exclude(guide_ad__isnull=False) \
|
||||
.values_list('guide_ad', 'attachment_suffix_url')
|
||||
for guide_ad, attachment_suffix_url in tqdm(advertorial_galleries):
|
||||
advertorial = get_guide_element_advertorial(guide_ad.id)
|
||||
image, _ = Image.objects.get_or_create(image=attachment_suffix_url,
|
||||
defaults={
|
||||
'image': attachment_suffix_url,
|
||||
'orientation': Image.HORIZONTAL,
|
||||
'title': f'{advertorial.name} - '
|
||||
f'{attachment_suffix_url}',
|
||||
})
|
||||
city_gallery, created = AdvertorialGallery.objects.get_or_create(image=image,
|
||||
advertorial=advertorial,
|
||||
is_main=True)
|
||||
if created:
|
||||
created_counter += 1
|
||||
legacy_guide_element_qs = GuideElements.objects.filter(id=legacy_guide_element_id)
|
||||
guide_element_qs = GuideElement.objects.filter(old_id=legacy_guide_element_id)
|
||||
|
||||
if guide_element_qs.exists() and legacy_guide_element_qs.exists():
|
||||
return guide_element_qs.first()
|
||||
else:
|
||||
gallery_obj_exists_counter += 1
|
||||
raise ValueError(f'Guide element was not transfer correctly - '
|
||||
f'{legacy_guide_element_id}.')
|
||||
|
||||
print(f'Created: {created_counter}\n'
|
||||
f'Already added: {gallery_obj_exists_counter}')
|
||||
to_update = []
|
||||
not_updated = 0
|
||||
guide_element_label_photos = LabelPhotos.objects.exclude(guide_ad__isnull=True) \
|
||||
.filter(guide_ad__type='GuideAdLabel') \
|
||||
.distinct() \
|
||||
.values_list('guide_ad', 'attachment_suffix_url')
|
||||
for guide_ad_id, attachment_suffix_url in tqdm(guide_element_label_photos):
|
||||
legacy_guide_element_ids = Subquery(
|
||||
GuideElements.objects.exclude(guide__isnull=True)
|
||||
.exclude(guide__title__icontains='test')
|
||||
.values_list('id', flat=True)
|
||||
)
|
||||
legacy_guide_ad_qs = GuideAds.objects.filter(id=guide_ad_id,
|
||||
guide_ad_node_id__in=legacy_guide_element_ids)
|
||||
if legacy_guide_ad_qs.exists():
|
||||
guide_element = get_guide_element(legacy_guide_ad_qs.first())
|
||||
if guide_element:
|
||||
image, _ = Image.objects.get_or_create(image=attachment_suffix_url,
|
||||
defaults={
|
||||
'image': attachment_suffix_url,
|
||||
'orientation': Image.HORIZONTAL,
|
||||
'title': f'{guide_element.__str__()} '
|
||||
f'{guide_element.id} - '
|
||||
f'{attachment_suffix_url}'})
|
||||
if not guide_element.label_photo:
|
||||
guide_element.label_photo = image
|
||||
to_update.append(guide_element)
|
||||
else:
|
||||
not_updated += 1
|
||||
|
||||
GuideElement.objects.bulk_update(to_update, ['label_photo', ])
|
||||
print(f'Added label photo to {len(to_update)} objects\n'
|
||||
f'Objects {not_updated} not updated')
|
||||
|
||||
|
||||
data_types = {
|
||||
|
|
@ -344,10 +358,10 @@ data_types = {
|
|||
transfer_guide_elements_bulk,
|
||||
],
|
||||
'guide_element_advertorials': [
|
||||
transfer_guide_element_advertorials
|
||||
transfer_guide_element_advertorials,
|
||||
],
|
||||
'guide_element_advertorial_galleries': [
|
||||
|
||||
'guide_element_label_photo': [
|
||||
transfer_guide_element_label_photo,
|
||||
],
|
||||
'guide_complete': [
|
||||
transfer_guide, # transfer guides from Guides
|
||||
|
|
@ -357,6 +371,6 @@ data_types = {
|
|||
transfer_guide_element_type, # partial transfer section types from GuideElements
|
||||
transfer_guide_elements_bulk, # transfer result of GuideFilters from GuideElements
|
||||
transfer_guide_element_advertorials, # transfer advertorials that linked to GuideElements
|
||||
transfer_guide_element_advertorial_galleries, # transfer advertorial galleries
|
||||
transfer_guide_element_label_photo, # transfer guide element label photos
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ class Command(BaseCommand):
|
|||
'guide_element_types',
|
||||
'guide_elements_bulk',
|
||||
'guide_element_advertorials',
|
||||
'guide_element_label_photo',
|
||||
'guide_complete',
|
||||
'languages', # №4 - перенос языков
|
||||
]
|
||||
|
|
|
|||
|
|
@ -343,7 +343,7 @@ class GuideAds(MigrateMixin):
|
|||
nb_right_pages = models.IntegerField(blank=True, null=True)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
guide_ad_node_id = models.IntegerField(blank=True, null=True)
|
||||
guide_ad_node = models.ForeignKey('GuideElements', on_delete=models.DO_NOTHING, blank=True, null=True)
|
||||
type = models.CharField(max_length=255, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
|
|
@ -1232,7 +1232,7 @@ class LabelPhotos(MigrateMixin):
|
|||
attachment_content_type = models.CharField(max_length=255)
|
||||
attachment_file_size = models.IntegerField()
|
||||
attachment_updated_at = models.DateTimeField()
|
||||
attachment_suffix_url = models.DateTimeField()
|
||||
attachment_suffix_url = models.CharField(max_length=255)
|
||||
geometries = models.CharField(max_length=1024)
|
||||
|
||||
class Meta:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user