@@ -39,16 +39,20 @@ def get_permission(permission_id):
39
39
return f"{ permission_id } "
40
40
41
41
42
- def get_workspace_permission (permission_id , workspace_id ):
42
+ def get_workspace_permission (permission_id , workspace_id , role = None ):
43
43
"""
44
44
获取工作空间权限字符串
45
45
@param permission_id: 权限id
46
46
@param workspace_id: 工作空间id
47
+ @param role: 角色
47
48
@return:
48
49
"""
49
50
if isinstance (permission_id , PermissionConstants ):
50
51
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 } " ]
52
56
53
57
54
58
def get_role_permission (role , workspace_id ):
@@ -63,18 +67,20 @@ def get_role_permission(role, workspace_id):
63
67
return f"{ role } :/WORKSPACE/{ workspace_id } "
64
68
65
69
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 ):
67
71
"""
68
72
获取工作空间下所有的权限
69
73
@param role_permission_mapping_dict: 角色权限关联字典
70
74
@param workspace_user_role_mapping_list: 工作空间用户角色关联列表
75
+ @param role_model_dict: 角色字典
71
76
@return: 工作空间下的权限
72
77
"""
73
78
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
75
81
in
76
82
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 , []) , [])
78
84
79
85
80
86
def get_workspace_resource_permission_list (
@@ -156,6 +162,10 @@ def get_permission_list(user,
156
162
# 获取角色权限映射数据
157
163
role_permission_mapping_list = QuerySet (role_permission_mapping_model ).filter (
158
164
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
+
159
169
role_permission_mapping_dict = group_by (
160
170
role_permission_mapping_list , lambda item : item .role_id )
161
171
@@ -169,7 +179,7 @@ def get_permission_list(user,
169
179
workspace_user_role_mapping_dict )
170
180
171
181
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 )
173
183
# 系统权限
174
184
system_permission_list = [role_permission_mapping .permission_id for role_permission_mapping in
175
185
role_permission_mapping_list ]
@@ -193,7 +203,7 @@ def get_permission_list(user,
193
203
workspace_user_role_mapping_dict )
194
204
195
205
workspace_permission_list = get_workspace_permission_list (role_permission_mapping_dict ,
196
- workspace_user_role_mapping_list )
206
+ workspace_user_role_mapping_list , {} )
197
207
# 系统权限
198
208
system_permission_list = [role_permission_mapping .permission_id for role_permission_mapping in
199
209
role_permission_mapping_list if
0 commit comments