MCPcopy Index your code
hub / github.com/1Panel-dev/MaxKB / ToolBatchOperateSerializer

Class ToolBatchOperateSerializer

apps/tools/serializers/tool.py:1624–1678  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1622
1623
1624class ToolBatchOperateSerializer(serializers.Serializer):
1625 workspace_id = serializers.CharField(required=True, label=_("workspace id"))
1626
1627 def is_valid(self, *, raise_exception=False):
1628 super().is_valid(raise_exception=True)
1629
1630 @transaction.atomic
1631 def batch_delete(self, instance: Dict, with_valid=True):
1632 from knowledge.serializers.common import BatchSerializer
1633 from trigger.handler.simple_tools import deploy
1634 from trigger.serializers.trigger import TriggerModelSerializer
1635
1636 if with_valid:
1637 BatchSerializer(data=instance).is_valid(model=Tool, raise_exception=True)
1638 self.is_valid(raise_exception=True)
1639 id_list = instance.get("id_list")
1640 workspace_id = self.data.get("workspace_id")
1641
1642 tool_query_set = QuerySet(Tool).filter(id__in=id_list, workspace_id=workspace_id)
1643
1644 for tool in tool_query_set:
1645 if tool.template_id is None and tool.icon != "":
1646 QuerySet(File).filter(id=tool.icon.split("/")[-1]).delete()
1647 if tool.tool_type == ToolType.SKILL:
1648 QuerySet(File).filter(id=tool.code).delete()
1649
1650 QuerySet(WorkspaceUserResourcePermission).filter(target__in=id_list).delete()
1651 QuerySet(ResourceMapping).filter(Q(target_id__in=id_list) | Q(source_id__in=id_list)).delete()
1652 QuerySet(ToolRecord).filter(tool_id__in=id_list).delete()
1653
1654 trigger_ids = list(
1655 QuerySet(TriggerTask).filter(source_type="TOOL", source_id__in=id_list).values("trigger_id").distinct()
1656 )
1657
1658 QuerySet(TriggerTask).filter(source_type="TOOL", source_id__in=id_list).delete()
1659 for trigger_id in trigger_ids:
1660 trigger = Trigger.objects.filter(id=trigger_id["trigger_id"]).first()
1661 if trigger and trigger.is_active:
1662 deploy(TriggerModelSerializer(trigger).data, **{})
1663
1664 tool_query_set.delete()
1665 return True
1666
1667 def batch_move(self, instance: Dict, with_valid=True):
1668 from knowledge.serializers.common import BatchMoveSerializer
1669
1670 if with_valid:
1671 BatchMoveSerializer(data=instance).is_valid(model=Tool, raise_exception=True)
1672 self.is_valid(raise_exception=True)
1673 id_list = instance.get("id_list")
1674 folder_id = instance.get("folder_id")
1675 workspace_id = self.data.get("workspace_id")
1676
1677 QuerySet(Tool).filter(id__in=id_list, workspace_id=workspace_id).update(folder_id=folder_id)
1678 return True
1679
1680
1681class ToolTreeSerializer(serializers.Serializer):

Callers 2

innerMethod · 0.90
innerMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected