init.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import logging
  2. from django.core.management.base import BaseCommand
  3. from application import settings
  4. from dvadmin.system import signals
  5. logger = logging.getLogger(__name__)
  6. class Command(BaseCommand):
  7. """
  8. 项目初始化命令: python manage.py init
  9. """
  10. def add_arguments(self, parser):
  11. parser.add_argument(
  12. "init_name",
  13. nargs="*",
  14. type=str,
  15. )
  16. parser.add_argument("-y", nargs="*")
  17. parser.add_argument("-Y", nargs="*")
  18. parser.add_argument("-n", nargs="*")
  19. parser.add_argument("-N", nargs="*")
  20. def handle(self, *args, **options):
  21. reset = False
  22. if isinstance(options.get("y"), list) or isinstance(options.get("Y"), list):
  23. reset = True
  24. if isinstance(options.get("n"), list) or isinstance(options.get("N"), list):
  25. reset = False
  26. signals.pre_init_complete.send(sender=None, msg='开始初始化', data={"reset": reset})
  27. for app in settings.INSTALLED_APPS:
  28. signals.detail_init_complete.send(sender=None, msg='初始化中', data={"app": app, "reset": reset})
  29. try:
  30. exec(
  31. f"""
  32. from {app}.fixtures.initialize import Initialize
  33. Initialize(reset={reset},app="{app}").run()
  34. """
  35. )
  36. except ModuleNotFoundError:
  37. # 兼容之前版本初始化
  38. try:
  39. exec(
  40. f"""
  41. from {app}.initialize import main
  42. main(reset={reset})
  43. """
  44. )
  45. except ModuleNotFoundError:
  46. pass
  47. signals.post_init_complete.send(sender=None, msg='初始化完成', data={"reset": reset})
  48. print("初始化数据完成!")