@@ -219,10 +219,26 @@ def get_permission_list(user,
219219 return permission_list
220220
221221
222- def reset_workspace_role (role , workspace_id ):
223- if role == RoleConstants .ADMIN .value .__str__ () or workspace_id is None :
224- return role
225- return f"{ role } :/WORKSPACE/{ workspace_id } "
222+ system_role_list = [RoleConstants .ADMIN .value .name , RoleConstants .WORKSPACE_MANAGE .value .name ,
223+ RoleConstants .USER .value .name ]
224+
225+ system_role = RoleConstants .ADMIN .value .name
226+
227+
228+ def reset_workspace_role (role_id , workspace_id , role_dict ):
229+ if system_role_list .__contains__ (role_id ):
230+ if system_role == role_id :
231+ return role_id
232+ else :
233+ return f"{ role_id } :/WORKSPACE/{ workspace_id } "
234+ else :
235+ r = role_dict .get (role_id )
236+ if r is not None :
237+ return ''
238+ role_type = role_dict .get (role_id ).type
239+ if system_role == role_type :
240+ return RoleConstants .EXTENDS_ADMIN .value .name
241+ return f"EXTENDS_{ role_type } :/WORKSPACE/{ workspace_id } "
226242
227243
228244def get_role_list (user ,
@@ -242,11 +258,14 @@ def get_role_list(user,
242258 if is_query_model :
243259 # 获取工作空间 用户 角色映射数据
244260 workspace_user_role_mapping_list = QuerySet (workspace_user_role_mapping_model ).filter (user_id = user .id )
245- role_list = [reset_workspace_role (workspace_user_role_mapping .role_id ,
246- workspace_user_role_mapping .workspace_id )
247- for
248- workspace_user_role_mapping in
249- workspace_user_role_mapping_list ]
261+ role_list = QuerySet (role_model ).filter (id__in = [wurm .role_id for wurm in workspace_user_role_mapping_list ])
262+ role_dict = {r .id : r for r in role_list }
263+ role_list = list (set ([reset_workspace_role (workspace_user_role_mapping .role_id ,
264+ workspace_user_role_mapping .workspace_id ,
265+ role_dict )
266+ for
267+ workspace_user_role_mapping in
268+ workspace_user_role_mapping_list ]))
250269 cache .set (key , workspace_list , version = version )
251270 return role_list
252271 else :
0 commit comments