feat: enhance knowledge pagination to include child folders in response
This commit is contained in:
parent
7780d89c55
commit
74fac81c7b
@ -23,10 +23,11 @@ from common.utils.common import valid_license, post, get_file_content
|
|||||||
from common.utils.fork import Fork, ChildLink
|
from common.utils.fork import Fork, ChildLink
|
||||||
from common.utils.split_model import get_split_model
|
from common.utils.split_model import get_split_model
|
||||||
from knowledge.models import Knowledge, KnowledgeScope, KnowledgeType, Document, Paragraph, Problem, \
|
from knowledge.models import Knowledge, KnowledgeScope, KnowledgeType, Document, Paragraph, Problem, \
|
||||||
ProblemParagraphMapping, ApplicationKnowledgeMapping, TaskType, State, SearchMode
|
ProblemParagraphMapping, ApplicationKnowledgeMapping, TaskType, State, SearchMode, KnowledgeFolder
|
||||||
from knowledge.serializers.common import ProblemParagraphManage, get_embedding_model_id_by_knowledge_id, MetaSerializer, \
|
from knowledge.serializers.common import ProblemParagraphManage, get_embedding_model_id_by_knowledge_id, MetaSerializer, \
|
||||||
GenerateRelatedSerializer, get_embedding_model_by_knowledge_id, list_paragraph
|
GenerateRelatedSerializer, get_embedding_model_by_knowledge_id, list_paragraph
|
||||||
from knowledge.serializers.document import DocumentSerializers
|
from knowledge.serializers.document import DocumentSerializers
|
||||||
|
from knowledge.serializers.knowledge_folder import KnowledgeFolderFlatSerializer
|
||||||
from knowledge.task.embedding import embedding_by_knowledge, delete_embedding_by_knowledge
|
from knowledge.task.embedding import embedding_by_knowledge, delete_embedding_by_knowledge
|
||||||
from knowledge.task.generate import generate_related_by_knowledge_id
|
from knowledge.task.generate import generate_related_by_knowledge_id
|
||||||
from knowledge.task.sync import sync_web_knowledge, sync_replace_web_knowledge
|
from knowledge.task.sync import sync_web_knowledge, sync_replace_web_knowledge
|
||||||
@ -136,15 +137,27 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
def page(self, current_page: int, page_size: int):
|
def page(self, current_page: int, page_size: int):
|
||||||
self.is_valid(raise_exception=True)
|
self.is_valid(raise_exception=True)
|
||||||
return native_page_search(
|
|
||||||
current_page,
|
folder_id = self.data.get('folder_id', 'root')
|
||||||
page_size,
|
root = KnowledgeFolder.objects.filter(id=folder_id).first()
|
||||||
self.get_query_set(),
|
if not root:
|
||||||
select_string=get_file_content(
|
raise serializers.ValidationError(_('Folder not found'))
|
||||||
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')
|
# 获取当前文件夹下的直接子文件夹
|
||||||
|
child_folders = KnowledgeFolder.objects.filter(parent=root)
|
||||||
|
folders_data = KnowledgeFolderFlatSerializer(child_folders, many=True).data
|
||||||
|
|
||||||
|
return {
|
||||||
|
'knowledge': native_page_search(
|
||||||
|
current_page,
|
||||||
|
page_size,
|
||||||
|
self.get_query_set(),
|
||||||
|
select_string=get_file_content(
|
||||||
|
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')
|
||||||
|
),
|
||||||
|
post_records_handler=lambda r: r
|
||||||
),
|
),
|
||||||
post_records_handler=lambda r: r
|
'folders': folders_data
|
||||||
)
|
}
|
||||||
|
|
||||||
def list(self):
|
def list(self):
|
||||||
self.is_valid(raise_exception=True)
|
self.is_valid(raise_exception=True)
|
||||||
|
|||||||
@ -181,12 +181,12 @@ class ToolView(APIView):
|
|||||||
@extend_schema(
|
@extend_schema(
|
||||||
methods=['POST'],
|
methods=['POST'],
|
||||||
summary=_('Check code'),
|
summary=_('Check code'),
|
||||||
operation_id=_('Check code'),
|
operation_id=_('Check code'), # type: ignore
|
||||||
description=_('Check code'),
|
description=_('Check code'),
|
||||||
request=PylintAPI.get_request(),
|
request=PylintAPI.get_request(),
|
||||||
responses=PylintAPI.get_response(),
|
responses=PylintAPI.get_response(),
|
||||||
parameters=PylintAPI.get_parameters(),
|
parameters=PylintAPI.get_parameters(),
|
||||||
tags=[_('Tool')]
|
tags=[_('Tool')] # type: ignore
|
||||||
)
|
)
|
||||||
@has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission())
|
@has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission())
|
||||||
def post(self, request: Request, workspace_id: str, tool_id: str):
|
def post(self, request: Request, workspace_id: str, tool_id: str):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user