From ee781150fd27d37c0b453ec411bc49e43310cf48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Fri, 22 Nov 2019 10:38:03 +0300 Subject: [PATCH 1/2] Site settings --- .../management/commands/add_site_settings.py | 70 +++++++++++++++++++ apps/main/models.py | 2 + 2 files changed, 72 insertions(+) create mode 100644 apps/main/management/commands/add_site_settings.py diff --git a/apps/main/management/commands/add_site_settings.py b/apps/main/management/commands/add_site_settings.py new file mode 100644 index 00000000..dac98275 --- /dev/null +++ b/apps/main/management/commands/add_site_settings.py @@ -0,0 +1,70 @@ +from django.core.management.base import BaseCommand +from django.db import connections +from establishment.management.commands.add_position import namedtuplefetchall +from main.models import SiteSettings +from location.models import Country +from tqdm import tqdm + + +class Command(BaseCommand): + help = '''Add add site settings from old db to new db. + Run after country migrate!!!''' + + def site_sql(self): + with connections['legacy'].cursor() as cursor: + cursor.execute(''' + select + id, + country_code_2, + pinterest_page_url, + twitter_page_url, + facebook_page_url, + contact_email, + config, + released, + instagram_page_url, + ad_config + from sites as s + ''') + return namedtuplefetchall(cursor) + + def add_site_settings(self): + objects=[] + for s in tqdm(self.site_sql(), desc='Add site settings'): + country = Country.objects.filter(code=s.code) + sites = SiteSettings.objects.filter(country=country) + if not sites.exists(): + objects.append( + SiteSettings( + country=country, + pinterest_page_url=s.pinterest_page_url, + twitter_page_url=s.twitter_page_url, + facebook_page_url=s.facebook_page_url, + instagram_page_url=s.instagram_page_url, + contact_email=s.contact_email, + config=s.config, + ad_config=s.ad_config + ) + ) + SiteSettings.objects.bulk_create(objects) + self.stdout.write(self.style.WARNING(f'Add or get tag category objects.')) + + # def add_category_tag(self): + # objects = [] + # for c in tqdm(self.category_sql(), desc='Add category tags'): + # categories = TagCategory.objects.filter(index_name=c.category) + # if not categories.exists(): + # objects.append( + # TagCategory(label={"en-GB": c.category}, + # value_type=c.value_type, + # index_name=c.category, + # public=True + # ) + # ) + # else: + # categories.update(public=True) + # TagCategory.objects.bulk_create(objects) + # self.stdout.write(self.style.WARNING(f'Add or get tag category objects.')) + + def handle(self, *args, **kwargs): + pass \ No newline at end of file diff --git a/apps/main/models.py b/apps/main/models.py index 61a4d447..fcce88ab 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -69,6 +69,8 @@ class SiteSettings(ProjectBaseMixin): verbose_name=_('AD config')) currency = models.ForeignKey(Currency, on_delete=models.PROTECT, null=True, default=None) + old_id = models.IntegerField(blank=True, null=True) + objects = SiteSettingsQuerySet.as_manager() class Meta: From 3a1e55ba1ffabcb5f0d173909433e939ed5f35b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Fri, 22 Nov 2019 10:58:07 +0300 Subject: [PATCH 2/2] Site settings migrate data --- .../management/commands/add_site_settings.py | 34 ++++++------------- .../migrations/0037_sitesettings_old_id.py | 18 ++++++++++ 2 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 apps/main/migrations/0037_sitesettings_old_id.py diff --git a/apps/main/management/commands/add_site_settings.py b/apps/main/management/commands/add_site_settings.py index dac98275..2414a153 100644 --- a/apps/main/management/commands/add_site_settings.py +++ b/apps/main/management/commands/add_site_settings.py @@ -14,8 +14,9 @@ class Command(BaseCommand): with connections['legacy'].cursor() as cursor: cursor.execute(''' select + distinct id, - country_code_2, + country_code_2 as code, pinterest_page_url, twitter_page_url, facebook_page_url, @@ -31,11 +32,12 @@ class Command(BaseCommand): def add_site_settings(self): objects=[] for s in tqdm(self.site_sql(), desc='Add site settings'): - country = Country.objects.filter(code=s.code) - sites = SiteSettings.objects.filter(country=country) + country = Country.objects.filter(code=s.code).first() + sites = SiteSettings.objects.filter(subdomain=s.code) if not sites.exists(): objects.append( SiteSettings( + subdomain=s.code, country=country, pinterest_page_url=s.pinterest_page_url, twitter_page_url=s.twitter_page_url, @@ -43,28 +45,12 @@ class Command(BaseCommand): instagram_page_url=s.instagram_page_url, contact_email=s.contact_email, config=s.config, - ad_config=s.ad_config + ad_config=s.ad_config, + old_id=s.id ) ) - SiteSettings.objects.bulk_create(objects) - self.stdout.write(self.style.WARNING(f'Add or get tag category objects.')) - - # def add_category_tag(self): - # objects = [] - # for c in tqdm(self.category_sql(), desc='Add category tags'): - # categories = TagCategory.objects.filter(index_name=c.category) - # if not categories.exists(): - # objects.append( - # TagCategory(label={"en-GB": c.category}, - # value_type=c.value_type, - # index_name=c.category, - # public=True - # ) - # ) - # else: - # categories.update(public=True) - # TagCategory.objects.bulk_create(objects) - # self.stdout.write(self.style.WARNING(f'Add or get tag category objects.')) + SiteSettings.objects.bulk_create(objects) + self.stdout.write(self.style.WARNING(f'Add or get tag category objects.')) def handle(self, *args, **kwargs): - pass \ No newline at end of file + self.add_site_settings() \ No newline at end of file diff --git a/apps/main/migrations/0037_sitesettings_old_id.py b/apps/main/migrations/0037_sitesettings_old_id.py new file mode 100644 index 00000000..e7ef11e2 --- /dev/null +++ b/apps/main/migrations/0037_sitesettings_old_id.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.7 on 2019-11-22 07:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0036_auto_20191115_0750'), + ] + + operations = [ + migrations.AddField( + model_name='sitesettings', + name='old_id', + field=models.IntegerField(blank=True, null=True), + ), + ]