Add data permission rule value template variable (#1081)

* Add data permission rule value template variable

* Improved models and columns
This commit is contained in:
Wu Clan
2026-02-23 18:12:02 +08:00
committed by GitHub
parent 0dfe74d1a3
commit 9e817db278
5 changed files with 132 additions and 56 deletions
@@ -7,6 +7,7 @@ from backend.app.admin.schema.data_rule import (
DeleteDataRuleParam,
GetDataRuleColumnDetail,
GetDataRuleDetail,
GetDataRuleTemplateVariableDetail,
UpdateDataRuleParam,
)
from backend.app.admin.service.data_rule_service import data_rule_service
@@ -34,6 +35,12 @@ async def get_data_rule_model_columns(
return response_base.success(data=models)
@router.get('/value-template-variables', summary='获取数据规则值可用模板变量', dependencies=[DependsJwtAuth])
async def get_data_rule_value_template_variables() -> ResponseSchemaModel[list[GetDataRuleTemplateVariableDetail]]:
variables = await data_rule_service.get_value_template_variables()
return response_base.success(data=variables)
@router.get('/all', summary='获取所有数据规则', dependencies=[DependsJwtAuth])
async def get_all_data_rules(db: CurrentSession) -> ResponseSchemaModel[list[GetDataRuleDetail]]:
data = await data_rule_service.get_all(db=db)
+7
View File
@@ -46,3 +46,10 @@ class GetDataRuleColumnDetail(SchemaBase):
key: str = Field(description='字段名')
comment: str | None = Field(description='字段评论')
class GetDataRuleTemplateVariableDetail(SchemaBase):
"""数据规则可用模板变量详情"""
key: str = Field(description='变量标识')
comment: str = Field(description='变量描述')
+21 -3
View File
@@ -10,6 +10,7 @@ from backend.app.admin.schema.data_rule import (
CreateDataRuleParam,
DeleteDataRuleParam,
GetDataRuleColumnDetail,
GetDataRuleTemplateVariableDetail,
UpdateDataRuleParam,
)
from backend.app.admin.utils.cache import user_cache_manager
@@ -40,8 +41,16 @@ class DataRuleService:
@staticmethod
async def get_models() -> list[str]:
"""获取所有数据规则可用模型"""
model_exclude = ['DataScope', 'DataRule', 'sys_role_data_scope', 'sys_data_scope_rule']
return [m for m in list(get_data_permission_models().keys()) if m not in model_exclude]
model_template_variables = [var['key'] for var in settings.DATA_PERMISSION_MODEL_TEMPLATE_VARIABLES]
models = [
m for m in list(get_data_permission_models().keys()) if m not in settings.DATA_PERMISSION_MODEL_EXCLUDE
]
return model_template_variables + models
@staticmethod
async def get_value_template_variables() -> list[GetDataRuleTemplateVariableDetail]:
"""获取所有数据规则值可用模板变量"""
return [GetDataRuleTemplateVariableDetail(**var) for var in settings.DATA_PERMISSION_TEMPLATE_VARIABLES]
@staticmethod
async def get_columns(model: str) -> list[GetDataRuleColumnDetail]:
@@ -51,6 +60,15 @@ class DataRuleService:
:param model: 模型名称
:return:
"""
column_template_variables = [
GetDataRuleColumnDetail(key=var['key'], comment=var['comment'])
for var in settings.DATA_PERMISSION_COLUMN_TEMPLATE_VARIABLES
]
model_template_variable_keys = {var['key'] for var in settings.DATA_PERMISSION_MODEL_TEMPLATE_VARIABLES}
if model in model_template_variable_keys:
return column_template_variables
available_models = get_data_permission_models()
if model not in available_models:
raise errors.NotFoundError(msg='数据规则可用模型不存在')
@@ -62,7 +80,7 @@ class DataRuleService:
for column in table.columns
if column.key not in settings.DATA_PERMISSION_COLUMN_EXCLUDE
]
return model_columns
return model_columns + column_template_variables
@staticmethod
async def get_list(*, db: AsyncSession, name: str | None) -> dict[str, Any]: