Merge branch 'develop' into fix/check_tags

This commit is contained in:
Виктор Гладких 2019-11-21 14:34:01 +03:00
commit 9acb9e4a22
8 changed files with 154 additions and 28 deletions

View File

@ -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]
} }

View File

@ -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',)

View 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),
),
]

View File

@ -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')

View File

@ -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 = {

View File

@ -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):

View File

@ -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)

View File

@ -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 = {