import logging from django.core.management.base import BaseCommand from application import settings from dvadmin.system import signals logger = logging.getLogger(__name__) class Command(BaseCommand): """ 项目初始化命令: python manage.py init """ def add_arguments(self, parser): parser.add_argument( "init_name", nargs="*", type=str, ) parser.add_argument("-y", nargs="*") parser.add_argument("-Y", nargs="*") parser.add_argument("-n", nargs="*") parser.add_argument("-N", nargs="*") def handle(self, *args, **options): reset = False if isinstance(options.get("y"), list) or isinstance(options.get("Y"), list): reset = True if isinstance(options.get("n"), list) or isinstance(options.get("N"), list): reset = False signals.pre_init_complete.send(sender=None, msg='开始初始化', data={"reset": reset}) for app in settings.INSTALLED_APPS: signals.detail_init_complete.send(sender=None, msg='初始化中', data={"app": app, "reset": reset}) try: exec( f""" from {app}.fixtures.initialize import Initialize Initialize(reset={reset},app="{app}").run() """ ) except ModuleNotFoundError: # 兼容之前版本初始化 try: exec( f""" from {app}.initialize import main main(reset={reset}) """ ) except ModuleNotFoundError: pass signals.post_init_complete.send(sender=None, msg='初始化完成', data={"reset": reset}) print("初始化数据完成!")