mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 21:15:13 +00:00
Add data permission rule value template variable (#1081)
* Add data permission rule value template variable * Improved models and columns
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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='变量描述')
|
||||
|
||||
@@ -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]:
|
||||
|
||||
Reference in New Issue
Block a user