gault-millau/apps/establishment/management/commands/add_position.py
Виктор Гладких ea1ddfa320 Add employee
2019-11-05 16:29:27 +03:00

36 lines
1.2 KiB
Python

from django.core.management.base import BaseCommand
from django.db import connections
from collections import namedtuple
from establishment.models import Position
def namedtuplefetchall(cursor):
"Return all rows from a cursor as a namedtuple"
desc = cursor.description
nt_result = namedtuple('Result', [col[0] for col in desc])
return [nt_result(*row) for row in cursor.fetchall()]
class Command(BaseCommand):
help = 'Add position from old db to new db'
def position_sql(self):
with connections['legacy'].cursor() as cursor:
cursor.execute('''
select
DISTINCT a.`role` as position_name
from affiliations as a
''')
return namedtuplefetchall(cursor)
def handle(self, *args, **kwargs):
objects = []
for p in self.position_sql():
count = Position.objects.filter(name={"en-GB": p.position_name}).count()
if count == 0:
objects.append(Position(name={"en-GB": p.position_name}))
p = Position.objects.bulk_create(objects)
self.stdout.write(self.style.WARNING(f'Created positions objects.'))