From d8bf287c85902e1bf62b7e166ca78422981afdec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 10 May 2021 22:48:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD(APP=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF):=20=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=A8=A1?= =?UTF-8?q?=E6=9D=BFApp=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=BF=AB=E9=80=9F?= =?UTF-8?q?=E5=88=9B=E5=BB=BAapp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dvadmin-backend/apps/vadmin/logurus/test.py | 31 ------------------- dvadmin-backend/apps/vadmin/system/apps.py | 4 +-- .../apps/vadmin/template/__init__.py | 0 dvadmin-backend/apps/vadmin/template/admin.py | 0 dvadmin-backend/apps/vadmin/template/apps.py | 6 ++++ .../apps/vadmin/template/filters.py | 0 .../vadmin/template/migrations/__init__.py | 0 .../apps/vadmin/template/models/__init__.py | 2 ++ .../apps/vadmin/template/serializers.py | 0 dvadmin-backend/apps/vadmin/template/tasks.py | 0 dvadmin-backend/apps/vadmin/template/tests.py | 3 ++ dvadmin-backend/apps/vadmin/template/urls.py | 0 dvadmin-backend/apps/vadmin/template/views.py | 0 13 files changed, 13 insertions(+), 33 deletions(-) delete mode 100644 dvadmin-backend/apps/vadmin/logurus/test.py create mode 100644 dvadmin-backend/apps/vadmin/template/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/template/admin.py create mode 100644 dvadmin-backend/apps/vadmin/template/apps.py create mode 100644 dvadmin-backend/apps/vadmin/template/filters.py create mode 100644 dvadmin-backend/apps/vadmin/template/migrations/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/template/models/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/template/serializers.py create mode 100644 dvadmin-backend/apps/vadmin/template/tasks.py create mode 100644 dvadmin-backend/apps/vadmin/template/tests.py create mode 100644 dvadmin-backend/apps/vadmin/template/urls.py create mode 100644 dvadmin-backend/apps/vadmin/template/views.py diff --git a/dvadmin-backend/apps/vadmin/logurus/test.py b/dvadmin-backend/apps/vadmin/logurus/test.py deleted file mode 100644 index d48c393..0000000 --- a/dvadmin-backend/apps/vadmin/logurus/test.py +++ /dev/null @@ -1,31 +0,0 @@ -from logging import StreamHandler, getLevelName -from logging.handlers import RotatingFileHandler -from typing import Optional, IO - - -class MyStreamHandler(StreamHandler): - - def __init__(self, stream: Optional[IO[str]] = ...) -> None: - print(222) - super().__init__(stream) - - def __repr__(self): - level = getLevelName(self.level) - name = getattr(self.stream, 'name', '') - # bpo-36015: name can be an int - name = str(name) - if name: - name += ' ' - print(111) - return '<%s %s(%s)>' % (self.__class__.__name__, name, level) -class MyRotatingFileHandler(RotatingFileHandler): - - def __init__(self, filename: str, mode: str = ..., maxBytes: int = ..., backupCount: int = ..., - encoding: Optional[str] = ..., delay: bool = ...) -> None: - print(4444) - super().__init__(filename, mode, maxBytes, backupCount, encoding, delay) - - def __repr__(self): - level = getLevelName(self.level) - print(22) - return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level) diff --git a/dvadmin-backend/apps/vadmin/system/apps.py b/dvadmin-backend/apps/vadmin/system/apps.py index b5f214a..db16c07 100644 --- a/dvadmin-backend/apps/vadmin/system/apps.py +++ b/dvadmin-backend/apps/vadmin/system/apps.py @@ -1,6 +1,6 @@ from django.apps import AppConfig -class PermissionConfig(AppConfig): +class SystemConfig(AppConfig): name = 'vadmin.system' - verbose_name = "权限管理" + verbose_name = "系统管理" diff --git a/dvadmin-backend/apps/vadmin/template/__init__.py b/dvadmin-backend/apps/vadmin/template/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/admin.py b/dvadmin-backend/apps/vadmin/template/admin.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/apps.py b/dvadmin-backend/apps/vadmin/template/apps.py new file mode 100644 index 0000000..de74370 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/template/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class TemplateConfig(AppConfig): + name = 'vadmin.template' + verbose_name = "模板App" diff --git a/dvadmin-backend/apps/vadmin/template/filters.py b/dvadmin-backend/apps/vadmin/template/filters.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/migrations/__init__.py b/dvadmin-backend/apps/vadmin/template/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/models/__init__.py b/dvadmin-backend/apps/vadmin/template/models/__init__.py new file mode 100644 index 0000000..22e8e28 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/template/models/__init__.py @@ -0,0 +1,2 @@ +# from ..models.xxx import Xxx + diff --git a/dvadmin-backend/apps/vadmin/template/serializers.py b/dvadmin-backend/apps/vadmin/template/serializers.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/tasks.py b/dvadmin-backend/apps/vadmin/template/tasks.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/tests.py b/dvadmin-backend/apps/vadmin/template/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/dvadmin-backend/apps/vadmin/template/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/dvadmin-backend/apps/vadmin/template/urls.py b/dvadmin-backend/apps/vadmin/template/urls.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/template/views.py b/dvadmin-backend/apps/vadmin/template/views.py new file mode 100644 index 0000000..e69de29 From 5ce22a5a9098e6f4601c6972814848901e13a311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Tue, 11 May 2021 00:21:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD(=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E5=88=9B=E5=BB=BAapp=E5=91=BD=E4=BB=A4):=20=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E5=88=9B=E5=BB=BAapp=EF=BC=8C=E5=B9=B6=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E5=88=B0settings=E5=92=8Curls=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 创建命令: python manage.py createapp app名 python manage.py createapp app01 app02 ... --- .../apps/vadmin/op_drf/management/__init__.py | 0 .../op_drf/management/commands/__init__.py | 0 .../op_drf/management/commands/createapp.py | 75 +++++++++++++++++++ .../permission/management/commands/init.py | 2 +- dvadmin-backend/apps/vadmin/template/urls.py | 1 + 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 dvadmin-backend/apps/vadmin/op_drf/management/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/op_drf/management/commands/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/op_drf/management/commands/createapp.py diff --git a/dvadmin-backend/apps/vadmin/op_drf/management/__init__.py b/dvadmin-backend/apps/vadmin/op_drf/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/op_drf/management/commands/__init__.py b/dvadmin-backend/apps/vadmin/op_drf/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/op_drf/management/commands/createapp.py b/dvadmin-backend/apps/vadmin/op_drf/management/commands/createapp.py new file mode 100644 index 0000000..644b59f --- /dev/null +++ b/dvadmin-backend/apps/vadmin/op_drf/management/commands/createapp.py @@ -0,0 +1,75 @@ +import logging +import os +import shutil + +from django.core.management.base import BaseCommand + +logger = logging.getLogger(__name__) +from application.settings import BASE_DIR + + +class Command(BaseCommand): + """ + 创建App命令: + python manage.py createapp app名 + python manage.py createapp app01 app02 ... + """ + + def add_arguments(self, parser): + parser.add_argument('app_name', nargs='*', type=str, ) + + def handle(self, *args, **options): + app_name = options.get('app_name') + for name in app_name: + app_path = os.path.join(BASE_DIR, "apps", name) + # 判断app是否存在 + if os.path.exists(app_path): + print(f"创建失败,App {name} 已存在!") + break + source_path = os.path.join(BASE_DIR, "apps", "vadmin", "template") + target_path = app_path + if not os.path.exists(target_path): + # 如果目标路径不存在原文件夹的话就创建 + os.makedirs(target_path) + if os.path.exists(source_path): + # 如果目标路径存在原文件夹的话就先删除 + shutil.rmtree(target_path) + shutil.copytree(source_path, target_path) + # 修改app中的apps 内容 + content = f"""from django.apps import AppConfig + + +class {name.capitalize()}Config(AppConfig): + name = '{name}' + verbose_name = "{name}App" +""" + with open(os.path.join(app_path, "apps.py"), 'w', encoding='UTF-8') as f: + f.write(content) + f.close() + # 注册app到 settings.py 中 + injection(os.path.join(BASE_DIR, "application", "settings.py"), f" 'apps.{name}',\n", "INSTALLED_APPS", + "]") + + # 注册app到 urls.py 中 + injection(os.path.join(BASE_DIR, "application", "urls.py"), + f" re_path(r'^{name}/', include('apps.{name}.urls')),\n", "urlpatterns = [", + "]") + + print(f"创建 {name} App成功") + + +def injection(file_path, insert_content, startswith, endswith): + with open(file_path, "r+", encoding="utf-8") as f: + data = f.readlines() + with open(file_path, 'w', encoding='UTF-8') as f1: + is_INSTALLED_APPS = False + is_insert = False + for content in data: + # 判断文件是否 INSTALLED_APPS 开头 + if not is_insert and content.startswith(startswith): + is_INSTALLED_APPS = True + if not is_insert and content.startswith(endswith) and is_INSTALLED_APPS: + # 给前一行插入数据 + content = insert_content + content + is_insert = True + f1.writelines(content) diff --git a/dvadmin-backend/apps/vadmin/permission/management/commands/init.py b/dvadmin-backend/apps/vadmin/permission/management/commands/init.py index 3db4d21..ec4a3dc 100644 --- a/dvadmin-backend/apps/vadmin/permission/management/commands/init.py +++ b/dvadmin-backend/apps/vadmin/permission/management/commands/init.py @@ -12,7 +12,7 @@ logger = logging.getLogger(__name__) class Command(BaseCommand): """ - 项目初始化命令: python manage.py initialization + 项目初始化命令: python manage.py init """ def customSql(self, sql_list, model_name, table_name, is_yes): diff --git a/dvadmin-backend/apps/vadmin/template/urls.py b/dvadmin-backend/apps/vadmin/template/urls.py index e69de29..637600f 100644 --- a/dvadmin-backend/apps/vadmin/template/urls.py +++ b/dvadmin-backend/apps/vadmin/template/urls.py @@ -0,0 +1 @@ +urlpatterns = []