refactor: enhance document and knowledge deletion logic to remove associated files
This commit is contained in:
parent
19b7ae24c9
commit
580adc5a88
@ -665,6 +665,9 @@ class DocumentSerializers(serializers.Serializer):
|
|||||||
def delete(self):
|
def delete(self):
|
||||||
document_id = self.data.get("document_id")
|
document_id = self.data.get("document_id")
|
||||||
QuerySet(model=Document).filter(id=document_id).delete()
|
QuerySet(model=Document).filter(id=document_id).delete()
|
||||||
|
source_file_ids = [doc['meta'].get('source_file_id') for doc in
|
||||||
|
Document.objects.filter(id__=document_id).values("meta")]
|
||||||
|
QuerySet(File).filter(id__in=source_file_ids).delete()
|
||||||
# 删除段落
|
# 删除段落
|
||||||
QuerySet(model=Paragraph).filter(document_id=document_id).delete()
|
QuerySet(model=Paragraph).filter(document_id=document_id).delete()
|
||||||
# 删除问题
|
# 删除问题
|
||||||
@ -1189,6 +1192,9 @@ class DocumentSerializers(serializers.Serializer):
|
|||||||
BatchSerializer(data=instance).is_valid(model=Document, raise_exception=True)
|
BatchSerializer(data=instance).is_valid(model=Document, raise_exception=True)
|
||||||
self.is_valid(raise_exception=True)
|
self.is_valid(raise_exception=True)
|
||||||
document_id_list = instance.get("id_list")
|
document_id_list = instance.get("id_list")
|
||||||
|
source_file_ids = [doc['meta'].get('source_file_id') for doc in
|
||||||
|
Document.objects.filter(id__in=document_id_list).values("meta")]
|
||||||
|
QuerySet(File).filter(id__in=source_file_ids).delete()
|
||||||
QuerySet(Document).filter(id__in=document_id_list).delete()
|
QuerySet(Document).filter(id__in=document_id_list).delete()
|
||||||
QuerySet(Paragraph).filter(document_id__in=document_id_list).delete()
|
QuerySet(Paragraph).filter(document_id__in=document_id_list).delete()
|
||||||
delete_problems_and_mappings(document_id_list)
|
delete_problems_and_mappings(document_id_list)
|
||||||
|
|||||||
@ -29,7 +29,7 @@ from common.utils.fork import Fork, ChildLink
|
|||||||
from common.utils.logger import maxkb_logger
|
from common.utils.logger import maxkb_logger
|
||||||
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, TaskType, State, SearchMode, KnowledgeFolder
|
ProblemParagraphMapping, TaskType, State, SearchMode, KnowledgeFolder, File
|
||||||
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, write_image, zip_dir
|
GenerateRelatedSerializer, get_embedding_model_by_knowledge_id, list_paragraph, write_image, zip_dir
|
||||||
from knowledge.serializers.document import DocumentSerializers
|
from knowledge.serializers.document import DocumentSerializers
|
||||||
@ -417,6 +417,9 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||||||
QuerySet(WorkspaceUserResourcePermission).filter(target=knowledge.id).delete()
|
QuerySet(WorkspaceUserResourcePermission).filter(target=knowledge.id).delete()
|
||||||
QuerySet(ApplicationKnowledgeMapping).filter(knowledge_id=knowledge.id).delete()
|
QuerySet(ApplicationKnowledgeMapping).filter(knowledge_id=knowledge.id).delete()
|
||||||
knowledge.delete()
|
knowledge.delete()
|
||||||
|
File.objects.filter(
|
||||||
|
source_id=knowledge.id,
|
||||||
|
).delete()
|
||||||
delete_embedding_by_knowledge(self.data.get('knowledge_id'))
|
delete_embedding_by_knowledge(self.data.get('knowledge_id'))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user