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 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 requests import get
@ -179,6 +179,42 @@ def update_flags():
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 = {
"dictionaries": [
transfer_countries,
@ -192,4 +228,5 @@ data_types = {
"update_country_flag": [
update_flags
],
"fill_city_gallery": [transfer_city_gallery]
}

View File

@ -6,3 +6,4 @@ from partner import models
@admin.register(models.Partner)
class PartnerModelAdmin(admin.ModelAdmin):
"""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.utils.translation import gettext_lazy as _
from establishment.models import Establishment
from utils.models import ImageMixin, ProjectBaseMixin
class Partner(ProjectBaseMixin):
"""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'))
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:
verbose_name = _('partner')

View File

@ -1,19 +1,32 @@
from django.db.models import Value, IntegerField, F
from pprint import pprint
from establishment.models import Establishment
from transfer.models import EstablishmentBacklinks
from transfer.serializers.partner import PartnerSerializer
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.values()), many=True)
serialized_data = PartnerSerializer(data=list(queryset), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"News serializer errors: {serialized_data.errors}")
pprint(f"Partner serializer errors: {serialized_data.errors}")
data_types = {

View File

@ -40,6 +40,7 @@ class Command(BaseCommand):
'product_review',
'newsletter_subscriber', # подписчики на рассылку - переносить после переноса пользователей №1
'purchased_plaques', # №6 - перенос купленных тарелок
'fill_city_gallery', # №3 - перенос галереи городов
]
def handle(self, *args, **options):

View File

@ -217,10 +217,10 @@ class CityNames(MigrateMixin):
class CityPhotos(MigrateMixin):
using = 'legacy'
# city_id = models.IntegerField(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_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)
attachment_file_size = models.IntegerField(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
class PartnerSerializer(serializers.ModelSerializer):
backlink_url = serializers.CharField(source="url")
partnership_icon = serializers.CharField()
partnership_name = serializers.CharField()
class PartnerSerializer(serializers.Serializer):
pass
# 'id',
# '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):
data["image"] = partnership_to_image_url.get(data["partnership_name"]).get(data["partnership_icon"])
data.pop("partnership_name")
data.pop("partnership_icon")
return data
def create(self, validated_data):
return Partner.objects.create(**validated_data)
# def validate(self, data):
# data["image"] = partnership_to_image_url.get(data["partnership_name"]).get(data["partnership_icon"])
# data.pop("partnership_name")
# data.pop("partnership_icon")
# return data
#
# def create(self, validated_data):
# return Partner.objects.create(**validated_data)
partnership_to_image_url = {