(self, instance: Dict, with_valid=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 |
no test coverage detected