From 251d29c4613ab65f0c5f19e0271ad281bd3c5ca3 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, 8 Nov 2019 11:29:45 +0300 Subject: [PATCH] Add image url --- apps/account/management/commands/add_image.py | 41 +++++++++++++++++++ .../migrations/0019_auto_20191108_0827.py | 18 ++++++++ apps/account/models.py | 3 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 apps/account/management/commands/add_image.py create mode 100644 apps/account/migrations/0019_auto_20191108_0827.py diff --git a/apps/account/management/commands/add_image.py b/apps/account/management/commands/add_image.py new file mode 100644 index 00000000..e6f5d88d --- /dev/null +++ b/apps/account/management/commands/add_image.py @@ -0,0 +1,41 @@ +from django.core.management.base import BaseCommand +from django.db import connections +from django.db.models import Q +from establishment.management.commands.add_position import namedtuplefetchall +from account.models import User + + +class Command(BaseCommand): + help = 'Update accounts image from old db to new db' + + def account_sql(self): + with connections['legacy'].cursor() as cursor: + cursor.execute(''' + select REPLACE(p.image_url, 'original.png', p.attachment_file_name) as image_url, + p.attachment_file_name, + p.account_id + from + ( + select + REPLACE( + REPLACE(t.url, 'original.jpg', t.attachment_file_name), + 'original.jpeg', t.attachment_file_name + ) as image_url, + t.attachment_file_name, + t.account_id + from + ( + select a.account_id, a.attachment_file_name, + LOWER(trim(CONCAT(u.url, a.attachment_suffix_url))) as url + from account_pictures a, + (select 'https://s3.eu-central-1.amazonaws.com/gm-test.com/media/' url) u + ) t + ) p + ''') + return namedtuplefetchall(cursor) + + def handle(self, *args, **kwargs): + for a in self.account_sql(): + users = User.objects.filter(old_id=a.account_id) + users.update(image_url= a.image_url) + self.stdout.write(self.style.WARNING(f'Update accounts image url.')) \ No newline at end of file diff --git a/apps/account/migrations/0019_auto_20191108_0827.py b/apps/account/migrations/0019_auto_20191108_0827.py new file mode 100644 index 00000000..1a3bb2ac --- /dev/null +++ b/apps/account/migrations/0019_auto_20191108_0827.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-11-08 08:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0018_user_old_id'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='image_url', + field=models.URLField(blank=True, default=None, max_length=500, null=True, verbose_name='Image URL path'), + ), + ] diff --git a/apps/account/models.py b/apps/account/models.py index e06727f2..9573c92e 100644 --- a/apps/account/models.py +++ b/apps/account/models.py @@ -89,7 +89,8 @@ class UserQuerySet(models.QuerySet): class User(AbstractUser): """Base user model.""" image_url = models.URLField(verbose_name=_('Image URL path'), - blank=True, null=True, default=None) + blank=True, null=True, default=None, + max_length=500) cropped_image_url = models.URLField(verbose_name=_('Cropped image URL path'), blank=True, null=True, default=None) email = models.EmailField(_('email address'), unique=True,