Add plugin system and notice plugin (#503)

* Update system notice to plugin

* Add plugin model alembic support

* update plugin conf

* add plugin route injection

* update plugin route inject

* fix and optimize plugin router inject
This commit is contained in:
Wu Clan
2025-02-13 21:19:49 +08:00
committed by GitHub
parent 1e0b04006b
commit d9985f9d4d
30 changed files with 274 additions and 62 deletions
+5 -2
View File
@@ -9,7 +9,7 @@ from backend.common.enums import RoleDataRuleExpressionType, RoleDataRuleOperato
from backend.common.exception import errors
from backend.common.exception.errors import ServerError
from backend.core.conf import settings
from backend.utils.import_parse import dynamic_import
from backend.utils.import_parse import dynamic_import_data_model
if TYPE_CHECKING:
from backend.app.admin.schema.data_rule import GetDataRuleDetail
@@ -60,7 +60,10 @@ def filter_data_permission(request: Request) -> ColumnElement[bool]:
rule_model = rule.model
if rule_model not in settings.DATA_PERMISSION_MODELS:
raise errors.NotFoundError(msg='数据规则模型不存在')
model_ins = dynamic_import(settings.DATA_PERMISSION_MODELS[rule_model])
try:
model_ins = dynamic_import_data_model(settings.DATA_PERMISSION_MODELS[rule_model])
except (ImportError, AttributeError):
raise errors.ServerError(msg=f'数据模型 {rule_model} 动态导入失败,请联系系统超级管理员')
model_columns = [
key for key in model_ins.__table__.columns.keys() if key not in settings.DATA_PERMISSION_COLUMN_EXCLUDE
]