44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
from django.core.management.base import BaseCommand
|
|
from tqdm import tqdm
|
|
|
|
from establishment.models import Establishment
|
|
from transfer.models import Establishments
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = """
|
|
Update establishment status field..
|
|
Run command ./manage.py add_establishment_status
|
|
"""
|
|
|
|
def get_status(self, old_status):
|
|
if old_status:
|
|
old_status = old_status.lower()
|
|
if old_status == 'abandoned':
|
|
return Establishment.ABANDONED
|
|
elif old_status == 'closed':
|
|
return Establishment.CLOSED
|
|
elif old_status == 'published':
|
|
return Establishment.PUBLISHED
|
|
elif old_status == 'unpicked':
|
|
return Establishment.UNPICKED
|
|
return Establishment.WAITING
|
|
|
|
def handle(self, *args, **kwargs):
|
|
queryset = Establishment.objects.exclude(old_id__isnull=True)
|
|
to_update = []
|
|
non_existed_objects = 0
|
|
|
|
for establishment in tqdm(queryset, desc='Iterate over existed establishments'):
|
|
legacy_establishment_qs = Establishments.objects.filter(id=establishment.old_id)
|
|
if legacy_establishment_qs.exists():
|
|
legacy_establishment = legacy_establishment_qs.first()
|
|
establishment.status = self.get_status(legacy_establishment.state)
|
|
to_update.append(establishment)
|
|
else:
|
|
non_existed_objects += 1
|
|
|
|
Establishment.objects.bulk_update(to_update, ['status', ])
|
|
self.stdout.write(self.style.WARNING(f'Non existed {non_existed_objects} objects.'))
|
|
self.stdout.write(self.style.SUCCESS(f'Updated {len(to_update)} objects.'))
|