Merge branch 'develop' into fix/check_tags
This commit is contained in:
commit
9acb9e4a22
|
|
@ -1,8 +1,8 @@
|
||||||
from transfer.serializers import location as location_serializers
|
from transfer.serializers import location as location_serializers
|
||||||
from transfer import models as transfer_models
|
from transfer import models as transfer_models
|
||||||
from location.models import Country
|
from location.models import Country, CityGallery, City
|
||||||
|
from gallery.models import Image
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -179,6 +179,42 @@ def update_flags():
|
||||||
query.save()
|
query.save()
|
||||||
|
|
||||||
|
|
||||||
|
def transfer_city_gallery():
|
||||||
|
created_counter = 0
|
||||||
|
cities_not_exists = {}
|
||||||
|
gallery_obj_exists_counter = 0
|
||||||
|
|
||||||
|
city_gallery = transfer_models.CityPhotos.objects.exclude(city__isnull=True) \
|
||||||
|
.exclude(city__country_code_2__isnull=True) \
|
||||||
|
.exclude(city__country_code_2__iexact='') \
|
||||||
|
.exclude(city__region_code__isnull=True) \
|
||||||
|
.exclude(city__region_code__iexact='') \
|
||||||
|
.values_list('city_id', 'attachment_suffix_url')
|
||||||
|
for old_city_id, image_suffix_url in city_gallery:
|
||||||
|
city = City.objects.filter(old_id=old_city_id)
|
||||||
|
if city.exists():
|
||||||
|
city = city.first()
|
||||||
|
image, _ = Image.objects.get_or_create(image=image_suffix_url,
|
||||||
|
defaults={
|
||||||
|
'image': image_suffix_url,
|
||||||
|
'orientation': Image.HORIZONTAL,
|
||||||
|
'title': f'{city.name} - {image_suffix_url}',
|
||||||
|
})
|
||||||
|
city_gallery, created = CityGallery.objects.get_or_create(image=image,
|
||||||
|
city=city,
|
||||||
|
is_main=True)
|
||||||
|
if created:
|
||||||
|
created_counter += 1
|
||||||
|
else:
|
||||||
|
gallery_obj_exists_counter += 1
|
||||||
|
else:
|
||||||
|
cities_not_exists.update({'city_old_id': old_city_id})
|
||||||
|
|
||||||
|
print(f'Created: {created_counter}\n'
|
||||||
|
f'City not exists: {cities_not_exists}\n'
|
||||||
|
f'Already added: {gallery_obj_exists_counter}')
|
||||||
|
|
||||||
|
|
||||||
data_types = {
|
data_types = {
|
||||||
"dictionaries": [
|
"dictionaries": [
|
||||||
transfer_countries,
|
transfer_countries,
|
||||||
|
|
@ -192,4 +228,5 @@ data_types = {
|
||||||
"update_country_flag": [
|
"update_country_flag": [
|
||||||
update_flags
|
update_flags
|
||||||
],
|
],
|
||||||
|
"fill_city_gallery": [transfer_city_gallery]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,4 @@ from partner import models
|
||||||
@admin.register(models.Partner)
|
@admin.register(models.Partner)
|
||||||
class PartnerModelAdmin(admin.ModelAdmin):
|
class PartnerModelAdmin(admin.ModelAdmin):
|
||||||
"""Model admin for Partner model."""
|
"""Model admin for Partner model."""
|
||||||
|
raw_id_fields = ('establishment',)
|
||||||
|
|
|
||||||
50
apps/partner/migrations/0003_auto_20191121_1059.py
Normal file
50
apps/partner/migrations/0003_auto_20191121_1059.py
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Generated by Django 2.2.7 on 2019-11-21 10:59
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('establishment', '0065_establishment_purchased_products'),
|
||||||
|
('partner', '0002_auto_20191101_0939'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='establishment',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='partners', to='establishment.Establishment', verbose_name='Establishment'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='expiry_date',
|
||||||
|
field=models.DateField(blank=True, null=True, verbose_name='expiry date'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='name'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='old_id',
|
||||||
|
field=models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='old id'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='price_per_month',
|
||||||
|
field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='price per month'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='starting_date',
|
||||||
|
field=models.DateField(blank=True, null=True, verbose_name='starting date'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='partner',
|
||||||
|
name='type',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(0, 'Partner'), (1, 'Sponsor')], default=0),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1,13 +1,36 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from establishment.models import Establishment
|
||||||
from utils.models import ImageMixin, ProjectBaseMixin
|
from utils.models import ImageMixin, ProjectBaseMixin
|
||||||
|
|
||||||
|
|
||||||
class Partner(ProjectBaseMixin):
|
class Partner(ProjectBaseMixin):
|
||||||
"""Partner model."""
|
"""Partner model."""
|
||||||
|
|
||||||
|
PARTNER = 0
|
||||||
|
SPONSOR = 1
|
||||||
|
MODEL_TYPES = (
|
||||||
|
(PARTNER, _('Partner')),
|
||||||
|
(SPONSOR, _('Sponsor')),
|
||||||
|
)
|
||||||
|
|
||||||
|
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||||
|
name = models.CharField(_('name'), max_length=255, blank=True, null=True)
|
||||||
url = models.URLField(verbose_name=_('Partner URL'))
|
url = models.URLField(verbose_name=_('Partner URL'))
|
||||||
image = models.URLField(verbose_name=_('Partner image URL'), null=True)
|
image = models.URLField(verbose_name=_('Partner image URL'), null=True)
|
||||||
|
establishment = models.ForeignKey(
|
||||||
|
Establishment,
|
||||||
|
verbose_name=_('Establishment'),
|
||||||
|
related_name='partners',
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
)
|
||||||
|
type = models.PositiveSmallIntegerField(choices=MODEL_TYPES, default=PARTNER)
|
||||||
|
starting_date = models.DateField(_('starting date'), blank=True, null=True)
|
||||||
|
expiry_date = models.DateField(_('expiry date'), blank=True, null=True)
|
||||||
|
price_per_month = models.DecimalField(_('price per month'), max_digits=10, decimal_places=2, blank=True, null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('partner')
|
verbose_name = _('partner')
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,32 @@
|
||||||
from django.db.models import Value, IntegerField, F
|
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
|
from establishment.models import Establishment
|
||||||
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():
|
||||||
queryset = EstablishmentBacklinks.objects.filter(type="Partner")
|
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',
|
||||||
|
)
|
||||||
|
|
||||||
# queryset = EstablishmentBacklinks.objects.all() # Partner and Sponsor
|
serialized_data = PartnerSerializer(data=list(queryset), many=True)
|
||||||
|
|
||||||
serialized_data = PartnerSerializer(data=list(queryset.values()), many=True)
|
|
||||||
if serialized_data.is_valid():
|
if serialized_data.is_valid():
|
||||||
serialized_data.save()
|
serialized_data.save()
|
||||||
else:
|
else:
|
||||||
pprint(f"News serializer errors: {serialized_data.errors}")
|
pprint(f"Partner serializer errors: {serialized_data.errors}")
|
||||||
|
|
||||||
|
|
||||||
data_types = {
|
data_types = {
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ class Command(BaseCommand):
|
||||||
'product_review',
|
'product_review',
|
||||||
'newsletter_subscriber', # подписчики на рассылку - переносить после переноса пользователей №1
|
'newsletter_subscriber', # подписчики на рассылку - переносить после переноса пользователей №1
|
||||||
'purchased_plaques', # №6 - перенос купленных тарелок
|
'purchased_plaques', # №6 - перенос купленных тарелок
|
||||||
|
'fill_city_gallery', # №3 - перенос галереи городов
|
||||||
]
|
]
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
|
|
|
||||||
|
|
@ -217,10 +217,10 @@ class CityNames(MigrateMixin):
|
||||||
class CityPhotos(MigrateMixin):
|
class CityPhotos(MigrateMixin):
|
||||||
using = 'legacy'
|
using = 'legacy'
|
||||||
|
|
||||||
# city_id = models.IntegerField(blank=True, null=True)
|
|
||||||
city = models.ForeignKey(Cities, models.DO_NOTHING, blank=True, null=True)
|
city = models.ForeignKey(Cities, models.DO_NOTHING, blank=True, null=True)
|
||||||
attachment_file_name = models.CharField(max_length=255, blank=True, null=True)
|
attachment_file_name = models.CharField(max_length=255, blank=True, null=True)
|
||||||
attachment_content_type = models.CharField(max_length=255, blank=True, null=True)
|
attachment_content_type = models.CharField(max_length=255, blank=True, null=True)
|
||||||
|
attachment_suffix_url = models.CharField(max_length=255)
|
||||||
geometries = models.CharField(max_length=1024, blank=True, null=True)
|
geometries = models.CharField(max_length=1024, blank=True, null=True)
|
||||||
attachment_file_size = models.IntegerField(blank=True, null=True)
|
attachment_file_size = models.IntegerField(blank=True, null=True)
|
||||||
attachment_updated_at = models.DateTimeField(blank=True, null=True)
|
attachment_updated_at = models.DateTimeField(blank=True, null=True)
|
||||||
|
|
|
||||||
|
|
@ -2,27 +2,28 @@ from rest_framework import serializers
|
||||||
from partner.models import Partner
|
from partner.models import Partner
|
||||||
|
|
||||||
|
|
||||||
class PartnerSerializer(serializers.ModelSerializer):
|
class PartnerSerializer(serializers.Serializer):
|
||||||
backlink_url = serializers.CharField(source="url")
|
pass
|
||||||
partnership_icon = serializers.CharField()
|
# 'id',
|
||||||
partnership_name = serializers.CharField()
|
# 'establishment_id',
|
||||||
|
# 'partnership_name',
|
||||||
|
# 'partnership_icon',
|
||||||
|
# 'backlink_url',
|
||||||
|
# 'created_at',
|
||||||
|
# 'type',
|
||||||
|
# 'starting_date',
|
||||||
|
# 'expiry_date',
|
||||||
|
# 'price_per_month',
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Partner
|
|
||||||
fields = (
|
|
||||||
"backlink_url",
|
|
||||||
"partnership_icon",
|
|
||||||
"partnership_name"
|
|
||||||
)
|
|
||||||
|
|
||||||
def validate(self, data):
|
# def validate(self, data):
|
||||||
data["image"] = partnership_to_image_url.get(data["partnership_name"]).get(data["partnership_icon"])
|
# data["image"] = partnership_to_image_url.get(data["partnership_name"]).get(data["partnership_icon"])
|
||||||
data.pop("partnership_name")
|
# data.pop("partnership_name")
|
||||||
data.pop("partnership_icon")
|
# data.pop("partnership_icon")
|
||||||
return data
|
# return data
|
||||||
|
#
|
||||||
def create(self, validated_data):
|
# def create(self, validated_data):
|
||||||
return Partner.objects.create(**validated_data)
|
# return Partner.objects.create(**validated_data)
|
||||||
|
|
||||||
|
|
||||||
partnership_to_image_url = {
|
partnership_to_image_url = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user