Skip to content

Commit 580adc5

Browse files
committed
refactor: enhance document and knowledge deletion logic to remove associated files
1 parent 19b7ae2 commit 580adc5

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

apps/knowledge/serializers/document.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,9 @@ def cancel(self, instance, with_valid=True):
665665
def delete(self):
666666
document_id = self.data.get("document_id")
667667
QuerySet(model=Document).filter(id=document_id).delete()
668+
source_file_ids = [doc['meta'].get('source_file_id') for doc in
669+
Document.objects.filter(id__=document_id).values("meta")]
670+
QuerySet(File).filter(id__in=source_file_ids).delete()
668671
# 删除段落
669672
QuerySet(model=Paragraph).filter(document_id=document_id).delete()
670673
# 删除问题
@@ -1189,6 +1192,9 @@ def batch_delete(self, instance: Dict, with_valid=True):
11891192
BatchSerializer(data=instance).is_valid(model=Document, raise_exception=True)
11901193
self.is_valid(raise_exception=True)
11911194
document_id_list = instance.get("id_list")
1195+
source_file_ids = [doc['meta'].get('source_file_id') for doc in
1196+
Document.objects.filter(id__in=document_id_list).values("meta")]
1197+
QuerySet(File).filter(id__in=source_file_ids).delete()
11921198
QuerySet(Document).filter(id__in=document_id_list).delete()
11931199
QuerySet(Paragraph).filter(document_id__in=document_id_list).delete()
11941200
delete_problems_and_mappings(document_id_list)

apps/knowledge/serializers/knowledge.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from common.utils.logger import maxkb_logger
3030
from common.utils.split_model import get_split_model
3131
from knowledge.models import Knowledge, KnowledgeScope, KnowledgeType, Document, Paragraph, Problem, \
32-
ProblemParagraphMapping, TaskType, State, SearchMode, KnowledgeFolder
32+
ProblemParagraphMapping, TaskType, State, SearchMode, KnowledgeFolder, File
3333
from knowledge.serializers.common import ProblemParagraphManage, get_embedding_model_id_by_knowledge_id, MetaSerializer, \
3434
GenerateRelatedSerializer, get_embedding_model_by_knowledge_id, list_paragraph, write_image, zip_dir
3535
from knowledge.serializers.document import DocumentSerializers
@@ -417,6 +417,9 @@ def delete(self):
417417
QuerySet(WorkspaceUserResourcePermission).filter(target=knowledge.id).delete()
418418
QuerySet(ApplicationKnowledgeMapping).filter(knowledge_id=knowledge.id).delete()
419419
knowledge.delete()
420+
File.objects.filter(
421+
source_id=knowledge.id,
422+
).delete()
420423
delete_embedding_by_knowledge(self.data.get('knowledge_id'))
421424
return True
422425

0 commit comments

Comments
 (0)