From 0ab60c185292072e1b7c9a1b65637dc566a1003c 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: Wed, 6 Nov 2019 11:40:07 +0300 Subject: [PATCH] Add awards --- apps/main/management/commands/add_award.py | 41 +++++++++++++++++++ .../migrations/0033_auto_20191106_0744.py | 23 +++++++++++ apps/main/models.py | 13 ++++++ 3 files changed, 77 insertions(+) create mode 100644 apps/main/management/commands/add_award.py create mode 100644 apps/main/migrations/0033_auto_20191106_0744.py diff --git a/apps/main/management/commands/add_award.py b/apps/main/management/commands/add_award.py new file mode 100644 index 00000000..92b4a4b5 --- /dev/null +++ b/apps/main/management/commands/add_award.py @@ -0,0 +1,41 @@ +from django.core.management.base import BaseCommand +from django.db import connections +from establishment.management.commands.add_position import namedtuplefetchall +from main.models import Award, AwardType +from establishment.models import Employee + + +class Command(BaseCommand): + help = '''Add employee position from old db to new db. + Run after command add_award_type!''' + + def award_sql(self): + with connections['legacy'].cursor() as cursor: + cursor.execute(''' + select + DISTINCT + a.id, a.profile_id, a.title, + a.`year` as vintage_year, a.state, + t.id as award_type + from awards as a + join award_types t on t.id = a.award_type_id + join profiles p on p.id = a.profile_id + ''') + return namedtuplefetchall(cursor) + + def handle(self, *args, **kwargs): + objects =[] + for a in self.award_sql(): + profile = Employee.objects.filter(old_id=a.profile_id).first() + type = AwardType.objects.filter(old_id=a.award_type).first() + state = Award.PUBLISHED if a.state == 'published' else Award.WAITING + if profile and type: + print('THIS IS GOOD!') + award = Award(award_type=type, vintage_year=a.vintage_year, + title={"en-GB": a.title}, state=state, + content_object=profile, old_id=a.id) + objects.append(award) + awards = Award.objects.bulk_create(objects) + self.stdout.write(self.style.WARNING(f'Created establishment employee objects.')) + + diff --git a/apps/main/migrations/0033_auto_20191106_0744.py b/apps/main/migrations/0033_auto_20191106_0744.py new file mode 100644 index 00000000..726fa27f --- /dev/null +++ b/apps/main/migrations/0033_auto_20191106_0744.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.4 on 2019-11-06 07:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0032_awardtype_old_id'), + ] + + operations = [ + migrations.AddField( + model_name='award', + name='old_id', + field=models.IntegerField(blank=True, null=True), + ), + migrations.AddField( + model_name='award', + name='state', + field=models.PositiveSmallIntegerField(choices=[(0, 'waiting'), (1, 'published')], default=0, verbose_name='State'), + ), + ] diff --git a/apps/main/models.py b/apps/main/models.py index fbbf3701..57c85d72 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -161,6 +161,14 @@ class SiteFeature(ProjectBaseMixin): class Award(TranslatedFieldsMixin, URLImageMixin, models.Model): """Award model.""" + WAITING = 0 + PUBLISHED = 1 + + STATE_CHOICES = ( + (WAITING,'waiting'), + (PUBLISHED, 'published') + ) + award_type = models.ForeignKey('main.AwardType', on_delete=models.CASCADE) title = TJSONField( _('title'), null=True, blank=True, @@ -171,6 +179,11 @@ class Award(TranslatedFieldsMixin, URLImageMixin, models.Model): object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id') + state = models.PositiveSmallIntegerField(default=WAITING, choices=STATE_CHOICES, + verbose_name=_('State')) + + old_id = models.IntegerField(null=True, blank=True) + def __str__(self): title = 'None' lang = TranslationSettings.get_solo().default_language