from django.core.management.base import BaseCommand from transfer.utils import transfer_objects class Command(BaseCommand): help = 'Transfer data between databases' """Типы данных для трансфера ВНИМАНИЕ: первые буквы типов данных должны быть уникальны! """ SHORT_DATA_TYPES = [ 'dictionaries', 'news', 'account', 'subscriber', 'recipe', 'partner', 'establishment', 'gallery', 'commercial', 'overlook', 'tmp', 'menu', 'location_establishment' ] LONG_DATA_TYPES = [ 'update_country_flag' ] def handle(self, *args, **options): """Находим включённую опцию путём пересечения множества типов данных и множества включённых опций""" data_type = list(set(option for option in options.keys() if options[option]) & set(self.LONG_DATA_TYPES)) if len(data_type) != 1: data_type = list(set(option for option in options.keys() if options[option]) & set(self.SHORT_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) else: data_type = data_type[0] else: data_type = data_type[0] transfer_objects(data_type) def add_arguments(self, parser): for option_type in self.LONG_DATA_TYPES: parser.add_argument( f'--{option_type}', action='store_true', default=False, help=f'Transfer {option_type} objects' ) """Добавляем опции к команде, основываясь на типах данных, определённых в DATA_TYPES""" for option_type in self.SHORT_DATA_TYPES: parser.add_argument( f'-{option_type[:1]}', f'--{option_type}', action='store_true', default=False, help=f'Transfer {option_type} objects' )