gault-millau/apps/transfer/management/commands/transfer.py
2019-10-23 17:19:23 +05:00

39 lines
1.5 KiB
Python

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'
]
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'
)