Skip to content

Commit 74fac81

Browse files
committed
feat: enhance knowledge pagination to include child folders in response
1 parent 7780d89 commit 74fac81

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

apps/knowledge/serializers/knowledge.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
from common.utils.fork import Fork, ChildLink
2424
from common.utils.split_model import get_split_model
2525
from knowledge.models import Knowledge, KnowledgeScope, KnowledgeType, Document, Paragraph, Problem, \
26-
ProblemParagraphMapping, ApplicationKnowledgeMapping, TaskType, State, SearchMode
26+
ProblemParagraphMapping, ApplicationKnowledgeMapping, TaskType, State, SearchMode, KnowledgeFolder
2727
from knowledge.serializers.common import ProblemParagraphManage, get_embedding_model_id_by_knowledge_id, MetaSerializer, \
2828
GenerateRelatedSerializer, get_embedding_model_by_knowledge_id, list_paragraph
2929
from knowledge.serializers.document import DocumentSerializers
30+
from knowledge.serializers.knowledge_folder import KnowledgeFolderFlatSerializer
3031
from knowledge.task.embedding import embedding_by_knowledge, delete_embedding_by_knowledge
3132
from knowledge.task.generate import generate_related_by_knowledge_id
3233
from knowledge.task.sync import sync_web_knowledge, sync_replace_web_knowledge
@@ -136,15 +137,27 @@ def get_query_set(self):
136137

137138
def page(self, current_page: int, page_size: int):
138139
self.is_valid(raise_exception=True)
139-
return native_page_search(
140-
current_page,
141-
page_size,
142-
self.get_query_set(),
143-
select_string=get_file_content(
144-
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')
140+
141+
folder_id = self.data.get('folder_id', 'root')
142+
root = KnowledgeFolder.objects.filter(id=folder_id).first()
143+
if not root:
144+
raise serializers.ValidationError(_('Folder not found'))
145+
# 获取当前文件夹下的直接子文件夹
146+
child_folders = KnowledgeFolder.objects.filter(parent=root)
147+
folders_data = KnowledgeFolderFlatSerializer(child_folders, many=True).data
148+
149+
return {
150+
'knowledge': native_page_search(
151+
current_page,
152+
page_size,
153+
self.get_query_set(),
154+
select_string=get_file_content(
155+
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')
156+
),
157+
post_records_handler=lambda r: r
145158
),
146-
post_records_handler=lambda r: r
147-
)
159+
'folders': folders_data
160+
}
148161

149162
def list(self):
150163
self.is_valid(raise_exception=True)

apps/tools/views/tool.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,12 @@ class Pylint(APIView):
181181
@extend_schema(
182182
methods=['POST'],
183183
summary=_('Check code'),
184-
operation_id=_('Check code'),
184+
operation_id=_('Check code'), # type: ignore
185185
description=_('Check code'),
186186
request=PylintAPI.get_request(),
187187
responses=PylintAPI.get_response(),
188188
parameters=PylintAPI.get_parameters(),
189-
tags=[_('Tool')]
189+
tags=[_('Tool')] # type: ignore
190190
)
191191
@has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission())
192192
def post(self, request: Request, workspace_id: str, tool_id: str):

0 commit comments

Comments
 (0)