from django.core.management.base import BaseCommand from transfer.utils import transfer_objects class Command(BaseCommand): help = 'Transfer data between databases' """Типы данных для трансфера ВНИМАНИЕ: первые буквы типов данных должны быть уникальны! """ DATA_TYPES = [ 'dictionaries', 'news', 'account', 'subscriber', 'recipe', 'partner', 'gallery', 'establishment', ] def handle(self, *args, **options): """Находим включённую опцию путём пересечения множества типов данных и множества включённых опций""" data_type = list(set(option for option in options.keys() if options[option]) & set(self.DATA_TYPES)) if len(data_type) != 1: print("You must set correct option!\r\nYou can get options list with \r\n\r\n\tmanage.py help transfer\r\n") exit(1) transfer_objects(data_type[0]) def add_arguments(self, parser): """Добавляем опции к команде, основываясь на типах данных, определённых в DATA_TYPES""" for option_type in self.DATA_TYPES: parser.add_argument( f'-{option_type[:1]}', f'--{option_type}', action='store_true', default=False, help=f'Transfer {option_type} objects' )