MCPcopy Create free account
hub / github.com/1Panel-dev/MaxKB / KnowledgeBatchOperateSerializer

Class KnowledgeBatchOperateSerializer

apps/knowledge/serializers/knowledge.py:1555–1596  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1553
1554
1555class KnowledgeBatchOperateSerializer(serializers.Serializer):
1556 workspace_id = serializers.CharField(required=True, label=_("workspace id"))
1557
1558 def is_valid(self, *, raise_exception=False):
1559 super().is_valid(raise_exception=True)
1560
1561 @transaction.atomic
1562 def batch_delete(self, instance: Dict, with_valid=True):
1563 if with_valid:
1564 BatchSerializer(data=instance).is_valid(model=Knowledge, raise_exception=True)
1565 self.is_valid(raise_exception=True)
1566 id_list = instance.get("id_list")
1567 workspace_id = self.data.get("workspace_id")
1568 knowledge_query_set = QuerySet(Knowledge).filter(id__in=id_list, workspace_id=workspace_id)
1569
1570 # 删除所有关联
1571 QuerySet(Document).filter(knowledge__in=knowledge_query_set).delete()
1572 QuerySet(ProblemParagraphMapping).filter(knowledge__in=knowledge_query_set).delete()
1573 QuerySet(Paragraph).filter(knowledge__in=knowledge_query_set).delete()
1574 QuerySet(Problem).filter(knowledge__in=knowledge_query_set).delete()
1575 QuerySet(WorkspaceUserResourcePermission).filter(target__in=id_list).delete()
1576
1577 for k_id in id_list:
1578 drop_knowledge_index(knowledge_id=k_id)
1579 delete_embedding_by_knowledge(k_id)
1580
1581 File.objects.filter(source_id__in=id_list).delete()
1582 QuerySet(ResourceMapping).filter(Q(target_id__in=id_list) | Q(source_id__in=id_list)).delete()
1583
1584 knowledge_query_set.delete()
1585 return True
1586
1587 def batch_move(self, instance: Dict, with_valid=True):
1588 if with_valid:
1589 BatchMoveSerializer(data=instance).is_valid(model=Knowledge, raise_exception=True)
1590 self.is_valid(raise_exception=True)
1591 id_list = instance.get("id_list")
1592 folder_id = instance.get("folder_id")
1593 workspace_id = self.data.get("workspace_id")
1594
1595 QuerySet(Knowledge).filter(id__in=id_list, workspace_id=workspace_id).update(folder_id=folder_id)
1596 return True

Callers 2

innerMethod · 0.90
innerMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected