From 120c737de7e11bb8cfab733d499d3e6720bb6034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Thu, 30 Nov 2023 20:23:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=89=80=E6=9C=89=E9=A1=B9=E7=9B=AE=E4=B8=8B=E7=9A=84app?= =?UTF-8?q?=E9=87=8C=E7=9A=84models=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/application/settings.py | 10 ++++------ backend/conf/env.example.py | 3 ++- backend/dvadmin/utils/models.py | 31 +++++++++++++++++++++++-------- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/backend/application/settings.py b/backend/application/settings.py index 699b77a..590c144 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -43,10 +43,8 @@ sys.path.insert(0, os.path.join(PLUGINS_PATH)) DEBUG = locals().get("DEBUG", True) ALLOWED_HOSTS = locals().get("ALLOWED_HOSTS", ["*"]) -# Application definition -CUSTOM_APPS = [ - "dvadmin.system", -] +# 列权限需要排除的App应用 +COLUMN_EXCLUDE_APPS = ['channels', 'captcha'] + locals().get("COLUMN_EXCLUDE_APPS", []) INSTALLED_APPS = [ "django.contrib.auth", @@ -60,8 +58,8 @@ INSTALLED_APPS = [ "corsheaders", # 注册跨域app "drf_yasg", "captcha", - 'channels', - *CUSTOM_APPS, + "channels", + "dvadmin.system", ] MIDDLEWARE = [ diff --git a/backend/conf/env.example.py b/backend/conf/env.example.py index ffc6afa..03e8c1b 100644 --- a/backend/conf/env.example.py +++ b/backend/conf/env.example.py @@ -44,4 +44,5 @@ LOGIN_NO_CAPTCHA_AUTH = True # ================================================= # ALLOWED_HOSTS = ["*"] -CUSTOM_APPS = [] +# 列权限中排除App应用 +COLUMN_EXCLUDE_APPS = [] diff --git a/backend/dvadmin/utils/models.py b/backend/dvadmin/utils/models.py index e331528..fb0c2ba 100644 --- a/backend/dvadmin/utils/models.py +++ b/backend/dvadmin/utils/models.py @@ -13,6 +13,7 @@ from django.db import models from django.conf import settings from application import settings + table_prefix = settings.TABLE_PREFIX # 数据库表名前缀 @@ -71,10 +72,13 @@ class CoreModel(models.Model): id = models.BigAutoField(primary_key=True, help_text="Id", verbose_name="Id") description = models.CharField(max_length=255, verbose_name="描述", null=True, blank=True, help_text="描述") creator = models.ForeignKey(to=settings.AUTH_USER_MODEL, related_query_name='creator_query', null=True, - verbose_name='创建人', help_text="创建人", on_delete=models.SET_NULL, db_constraint=False) + verbose_name='创建人', help_text="创建人", on_delete=models.SET_NULL, + db_constraint=False) modifier = models.CharField(max_length=255, null=True, blank=True, help_text="修改人", verbose_name="修改人") - dept_belong_id = models.CharField(max_length=255, help_text="数据归属部门", null=True, blank=True, verbose_name="数据归属部门") - update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间", verbose_name="修改时间") + dept_belong_id = models.CharField(max_length=255, help_text="数据归属部门", null=True, blank=True, + verbose_name="数据归属部门") + update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间", + verbose_name="修改时间") create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间", verbose_name="创建时间") @@ -136,12 +140,23 @@ def get_model_from_app(app_name): def get_custom_app_models(app_name=None): - """获取所有项目下的app里的models""" + """ + 获取所有项目下的app里的models + """ if app_name: return get_model_from_app(app_name) + all_apps = apps.get_app_configs() res = [] - for app in settings.CUSTOM_APPS: - all_models = get_model_from_app(app) - for model in all_models: - res.append(model) + for app in all_apps: + if app.name.startswith('django'): + continue + if app.name in settings.COLUMN_EXCLUDE_APPS: + continue + try: + all_models = get_model_from_app(app.name) + if all_models: + for model in all_models: + res.append(model) + except Exception as e: + pass return res