@@ -39,16 +39,20 @@ def get_permission(permission_id):
3939 return f"{ permission_id } "
4040
4141
42- def get_workspace_permission (permission_id , workspace_id ):
42+ def get_workspace_permission (permission_id , workspace_id , role = None ):
4343 """
4444 获取工作空间权限字符串
4545 @param permission_id: 权限id
4646 @param workspace_id: 工作空间id
47+ @param role: 角色
4748 @return:
4849 """
4950 if isinstance (permission_id , PermissionConstants ):
5051 permission_id = permission_id .value
51- return f"{ permission_id } :/WORKSPACE/{ workspace_id } "
52+ if role and role .type == RoleConstants .WORKSPACE_MANAGE .value .__str__ ():
53+ return [f"{ permission_id } :/WORKSPACE/{ workspace_id } :ROLE/{ role .type } " ,
54+ f"{ permission_id } :/WORKSPACE/{ workspace_id } " ]
55+ return [f"{ permission_id } :/WORKSPACE/{ workspace_id } " ]
5256
5357
5458def get_role_permission (role , workspace_id ):
@@ -63,18 +67,20 @@ def get_role_permission(role, workspace_id):
6367 return f"{ role } :/WORKSPACE/{ workspace_id } "
6468
6569
66- def get_workspace_permission_list (role_permission_mapping_dict , workspace_user_role_mapping_list ):
70+ def get_workspace_permission_list (role_permission_mapping_dict , workspace_user_role_mapping_list , role_model_dict ):
6771 """
6872 获取工作空间下所有的权限
6973 @param role_permission_mapping_dict: 角色权限关联字典
7074 @param workspace_user_role_mapping_list: 工作空间用户角色关联列表
75+ @param role_model_dict: 角色字典
7176 @return: 工作空间下的权限
7277 """
7378 workspace_permission_list = [
74- [get_workspace_permission (role_permission_mapping .permission_id , w_u_r .workspace_id ) for role_permission_mapping
79+ [get_workspace_permission (role_permission_mapping .permission_id , w_u_r .workspace_id ,
80+ role_model_dict .get (w_u_r .role_id , None )) for role_permission_mapping
7581 in
7682 role_permission_mapping_dict .get (w_u_r .role_id , [])] for w_u_r in workspace_user_role_mapping_list ]
77- return reduce (lambda x , y : [* x , * y ], workspace_permission_list , [])
83+ return reduce (lambda x , y : [* x , * y ], reduce ( lambda x , y : [ * x , * y ], workspace_permission_list , []) , [])
7884
7985
8086def get_workspace_resource_permission_list (
@@ -156,6 +162,10 @@ def get_permission_list(user,
156162 # 获取角色权限映射数据
157163 role_permission_mapping_list = QuerySet (role_permission_mapping_model ).filter (
158164 role_id__in = role_id_list )
165+ role_model_list = QuerySet (role_model ).filter (id__in = role_id_list )
166+
167+ role_model_dict = {role_model .id : role_model for role_model in role_model_list }
168+
159169 role_permission_mapping_dict = group_by (
160170 role_permission_mapping_list , lambda item : item .role_id )
161171
@@ -169,7 +179,7 @@ def get_permission_list(user,
169179 workspace_user_role_mapping_dict )
170180
171181 workspace_permission_list = get_workspace_permission_list (role_permission_mapping_dict ,
172- workspace_user_role_mapping_list )
182+ workspace_user_role_mapping_list , role_model_dict )
173183 # 系统权限
174184 system_permission_list = [role_permission_mapping .permission_id for role_permission_mapping in
175185 role_permission_mapping_list ]
@@ -193,7 +203,7 @@ def get_permission_list(user,
193203 workspace_user_role_mapping_dict )
194204
195205 workspace_permission_list = get_workspace_permission_list (role_permission_mapping_dict ,
196- workspace_user_role_mapping_list )
206+ workspace_user_role_mapping_list , {} )
197207 # 系统权限
198208 system_permission_list = [role_permission_mapping .permission_id for role_permission_mapping in
199209 role_permission_mapping_list if
0 commit comments