@@ -394,7 +394,7 @@ class Query(serializers.Serializer):
394394 name = serializers .CharField (required = False , allow_null = True , allow_blank = True , label = _ ('tool name' ))
395395 tool_type = serializers .CharField (required = True , label = _ ('tool type' ))
396396
397- def page (self , current_page : int , page_size : int ):
397+ def page_tool (self , current_page : int , page_size : int ):
398398 self .is_valid (raise_exception = True )
399399
400400 folder_id = self .data .get ('folder_id' , 'root' )
@@ -414,3 +414,28 @@ def page(self, current_page: int, page_size: int):
414414 Q (folder_id__in = all_folders ) &
415415 Q (tool_type = self .data .get ('tool_type' )))
416416 return page_search (current_page , page_size , tools , lambda record : ToolModelSerializer (record ).data )
417+
418+ def page_tool_with_folders (self , current_page : int , page_size : int ):
419+ self .is_valid (raise_exception = True )
420+
421+ folder_id = self .data .get ('folder_id' , 'root' )
422+ root = ToolFolder .objects .filter (id = folder_id ).first ()
423+ if not root :
424+ raise serializers .ValidationError (_ ('Folder not found' ))
425+ # 获取当前文件夹下的直接子文件夹
426+ child_folders = ToolFolder .objects .filter (parent = root )
427+ folders_data = ToolFolderFlatSerializer (child_folders , many = True ).data
428+
429+ if self .data .get ('name' ):
430+ tools = QuerySet (Tool ).filter (Q (workspace_id = self .data .get ('workspace_id' )) &
431+ Q (folder_id = root ) &
432+ Q (tool_type = self .data .get ('tool_type' )) &
433+ Q (name__contains = self .data .get ('name' )))
434+ else :
435+ tools = QuerySet (Tool ).filter (Q (workspace_id = self .data .get ('workspace_id' )) &
436+ Q (folder_id = root ) &
437+ Q (tool_type = self .data .get ('tool_type' )))
438+ return {
439+ 'tools' : page_search (current_page , page_size , tools , lambda record : ToolModelSerializer (record ).data ),
440+ 'folders' : folders_data
441+ }
0 commit comments