@@ -333,13 +333,17 @@ class ResourceUserPermissionSerializer(serializers.Serializer):
333333 'TOOL' : Tool
334334 }
335335
336- def get_queryset (self , instance ):
336+ def get_queryset (self , instance , is_x_pack_ee : bool ):
337337
338338 user_query_set = QuerySet (model = get_dynamics_model ({
339339 'nick_name' : models .CharField (),
340340 'username' : models .CharField (),
341341 "permission" : models .CharField (),
342- "id" : models .UUIDField (),
342+ "u.id" : models .UUIDField (),
343+ "role" : models .CharField (),
344+ "role_setting.type" : models .CharField (),
345+ "user_role_relation.workspace_id" : models .CharField (),
346+
343347 }))
344348 nick_name = instance .get ('nick_name' )
345349 username = instance .get ('username' )
@@ -368,9 +372,14 @@ def get_queryset(self, instance):
368372 workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
369373 if workspace_user_role_mapping_model :
370374 user_query_set = user_query_set .filter (
371- id__in = QuerySet (workspace_user_role_mapping_model ).filter (
372- workspace_id = self .data .get ('workspace_id' )).values ("user_id" ))
373-
375+ ** {"u.id__in" : QuerySet (workspace_user_role_mapping_model ).filter (
376+ workspace_id = self .data .get ('workspace_id' )).values ("user_id" )})
377+ if is_x_pack_ee :
378+ user_query_set = user_query_set .filter (
379+ ** {'role_setting.type' : "USER" , 'user_role_relation.workspace_id' : self .data .get ('workspace_id' )})
380+ else :
381+ user_query_set = user_query_set .filter (
382+ ** {'role' : "USER" })
374383 return {
375384 'workspace_user_resource_permission_query_set' : workspace_user_resource_permission_query_set ,
376385 'user_query_set' : user_query_set
@@ -380,22 +389,38 @@ def list(self, instance, with_valid=True):
380389 if with_valid :
381390 self .is_valid (raise_exception = True )
382391 ResourceUserPermissionUserListRequest (data = instance ).is_valid (raise_exception = True )
392+ is_x_pack_ee = self .is_x_pack_ee ()
383393 # 资源的用户授权列表
384- resource_user_permission_list = native_search (self .get_queryset (instance ), get_file_content (
385- os .path .join (PROJECT_DIR , "apps" , "system_manage" , 'sql' , 'get_resource_user_permission_detail.sql' )
394+ resource_user_permission_list = native_search (self .get_queryset (instance , is_x_pack_ee ), get_file_content (
395+ os .path .join (PROJECT_DIR , "apps" , "system_manage" ,
396+ 'sql' ,
397+ ('get_resource_user_permission_detail_ee.sql' if is_x_pack_ee else
398+ 'get_resource_user_permission_detail.sql' )
399+ )
386400 ))
387401 return resource_user_permission_list
388402
403+ @staticmethod
404+ def is_x_pack_ee ():
405+ workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
406+ role_permission_mapping_model = DatabaseModelManage .get_model ("role_permission_mapping_model" )
407+ return workspace_user_role_mapping_model is not None and role_permission_mapping_model is not None
408+
389409 def page (self , instance , current_page : int , page_size : int , with_valid = True ):
390410 if with_valid :
391411 self .is_valid (raise_exception = True )
392412 ResourceUserPermissionUserListRequest (data = instance ).is_valid (raise_exception = True )
393413 # 分页列表
394- resource_user_permission_page_list = native_page_search (current_page , page_size , self .get_queryset (instance ),
414+ is_x_pack_ee = self .is_x_pack_ee ()
415+ resource_user_permission_page_list = native_page_search (current_page , page_size ,
416+ self .get_queryset (instance , is_x_pack_ee ),
395417 get_file_content (
396418 os .path .join (PROJECT_DIR , "apps" , "system_manage" ,
397419 'sql' ,
398- 'get_resource_user_permission_detail.sql' )
420+ (
421+ 'get_resource_user_permission_detail_ee.sql' if is_x_pack_ee else
422+ 'get_resource_user_permission_detail.sql' )
423+ )
399424 ))
400425 return resource_user_permission_page_list
401426
@@ -407,9 +432,10 @@ def get_has_manage_permission_resource_under_folders(self, current_user_id, fold
407432 resource_model = self .RESOURCE_MODEL_MAP [auth_target_type ]
408433
409434 if workspace_manage :
410- current_user_managed_resources_ids = QuerySet (resource_model ).filter (workspace_id = workspace_id , folder__in = folder_ids ).annotate (
411- id_str = Cast ('id' , TextField ())
412- ).values_list ("id_str" , flat = True )
435+ current_user_managed_resources_ids = QuerySet (resource_model ).filter (workspace_id = workspace_id ,
436+ folder__in = folder_ids ).annotate (
437+ id_str = Cast ('id' , TextField ())
438+ ).values_list ("id_str" , flat = True )
413439 else :
414440 current_user_managed_resources_ids = QuerySet (WorkspaceUserResourcePermission ).filter (
415441 workspace_id = workspace_id , user_id = current_user_id , auth_target_type = auth_target_type ,
0 commit comments