Add award types

This commit is contained in:
Виктор Гладких 2019-11-06 10:23:31 +03:00
parent 545e9a249b
commit 3e3d7a21db
5 changed files with 53 additions and 0 deletions

View File

View File

@ -0,0 +1,34 @@
from django.core.management.base import BaseCommand
from django.db import connections
from establishment.management.commands.add_position import namedtuplefetchall
from main.models import AwardType
from location.models import Country
class Command(BaseCommand):
help = '''Add employee position from old db to new db.
Run after migrate country code!'''
def award_types_sql(self):
with connections['legacy'].cursor() as cursor:
cursor.execute('''
SELECT
DISTINCT
at.id, TRIM(at.title) AS name,
s.country_code_2 AS country_code
FROM award_types as at
JOIN sites s on s.id = at.site_id
WHERE LENGTH(TRIM(at.title))>0
''')
return namedtuplefetchall(cursor)
def handle(self, *args, **kwargs):
objects =[]
for a in self.award_types_sql():
country = Country.objects.filter(code=a.country_code).first()
if country:
type = AwardType(name=a.name, old_id=a.id)
type.country = country
objects.append(type)
types = AwardType.objects.bulk_create(objects)
self.stdout.write(self.style.WARNING(f'Created establishment employee objects.'))

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-11-06 07:14
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('main', '0031_auto_20191103_2037'),
]
operations = [
migrations.AddField(
model_name='awardtype',
name='old_id',
field=models.IntegerField(blank=True, null=True),
),
]

View File

@ -184,6 +184,7 @@ class AwardType(models.Model):
country = models.ForeignKey(
'location.Country', verbose_name=_('country'), on_delete=models.CASCADE)
name = models.CharField(_('name'), max_length=255)
old_id = models.IntegerField(null=True, blank=True)
def __str__(self):
return self.name