3535from knowledge .models import Knowledge
3636from maxkb .conf import PROJECT_DIR
3737from models_provider .models import Model
38+ from system_manage .models import WorkspaceUserResourcePermission
3839from tools .models import Tool , ToolScope
3940from tools .serializers .tool import ToolModelSerializer
4041from users .models import User
@@ -295,7 +296,7 @@ class Query(serializers.Serializer):
295296 workspace_id = serializers .CharField (required = False , label = _ ('Workspace ID' ))
296297 user_id = serializers .UUIDField (required = True , label = _ ("User ID" ))
297298
298- def get_query_set (self , instance : Dict , workspace_manage ):
299+ def get_query_set (self , instance : Dict , workspace_manage : bool , is_x_pack_ee : bool ):
299300 folder_query_set = QuerySet (ApplicationFolder )
300301 application_query_set = QuerySet (Application )
301302 workspace_id = self .data .get ('workspace_id' )
@@ -317,8 +318,14 @@ def get_query_set(self, instance: Dict, workspace_manage):
317318 application_query_set = application_query_set .filter (desc__contains = desc )
318319 application_custom_sql_query_set = application_query_set
319320 application_query_set = application_query_set .order_by ("-update_time" )
321+
320322 return {'folder_query_set' : folder_query_set ,
321- 'application_query_set' : application_query_set } if not workspace_manage else {
323+ 'application_query_set' : application_query_set ,
324+ 'workspace_user_resource_permission_query_set' : QuerySet (WorkspaceUserResourcePermission ).filter (
325+ auth_target_type = "KNOWLEDGE" ,
326+ workspace_id = workspace_id ,
327+ user_id = user_id )} if (
328+ not workspace_manage and is_x_pack_ee ) else {
322329 'folder_query_set' : folder_query_set ,
323330 'application_query_set' : application_query_set ,
324331 'application_custom_sql' : application_custom_sql_query_set
@@ -336,11 +343,12 @@ def list(self, instance: Dict):
336343 user_id = self .data .get ("user_id" )
337344 ApplicationQueryRequest (data = instance ).is_valid (raise_exception = True )
338345 workspace_manage = is_workspace_manage (user_id , workspace_id )
339- return native_search (self .get_query_set (instance , workspace_manage ),
346+ is_x_pack_ee = self .is_x_pack_ee ()
347+ return native_search (self .get_query_set (instance , workspace_manage , is_x_pack_ee ),
340348 select_string = get_file_content (
341349 os .path .join (PROJECT_DIR , "apps" , "application" , 'sql' ,
342350 'list_application.sql' if workspace_manage else (
343- 'list_application_user_ee.sql' if self . is_x_pack_ee () else 'list_application_user.sql' )
351+ 'list_application_user_ee.sql' if is_x_pack_ee else 'list_application_user.sql' )
344352 )))
345353
346354 def page (self , current_page : int , page_size : int , instance : Dict ):
@@ -349,11 +357,12 @@ def page(self, current_page: int, page_size: int, instance: Dict):
349357 workspace_id = self .data .get ('workspace_id' )
350358 user_id = self .data .get ("user_id" )
351359 workspace_manage = is_workspace_manage (user_id , workspace_id )
352- return native_page_search (current_page , page_size , self .get_query_set (instance , workspace_manage ),
360+ is_x_pack_ee = self .is_x_pack_ee ()
361+ return native_page_search (current_page , page_size , self .get_query_set (instance , workspace_manage , is_x_pack_ee ),
353362 get_file_content (
354363 os .path .join (PROJECT_DIR , "apps" , "application" , 'sql' ,
355364 'list_application.sql' if workspace_manage else (
356- 'list_application_user_ee.sql' if self . is_x_pack_ee () else 'list_application_user.sql' ))),
365+ 'list_application_user_ee.sql' if is_x_pack_ee else 'list_application_user.sql' ))),
357366 )
358367
359368
0 commit comments