(self, with_valid=True)
| 584 | return True |
| 585 | |
| 586 | def one(self, with_valid=True): |
| 587 | if with_valid: |
| 588 | self.is_valid() |
| 589 | trigger_id = self.data.get('trigger_id') |
| 590 | workspace_id = self.data.get('workspace_id') |
| 591 | trigger = QuerySet(Trigger).filter(workspace_id=workspace_id, id=trigger_id).first() |
| 592 | |
| 593 | trigger_tasks = list(QuerySet(TriggerTask).filter(trigger_id=trigger_id)) |
| 594 | |
| 595 | application_ids = [] |
| 596 | tool_ids = [] |
| 597 | for task in trigger_tasks: |
| 598 | if task.source_type == TriggerTaskTypeChoices.APPLICATION: |
| 599 | application_ids.append(task.source_id) |
| 600 | elif task.source_type == TriggerTaskTypeChoices.TOOL: |
| 601 | tool_ids.append(task.source_id) |
| 602 | |
| 603 | trigger_task_list = TriggerTaskModelSerializer(trigger_tasks, many=True).data |
| 604 | |
| 605 | application_task_list = [] |
| 606 | if application_ids: |
| 607 | applications = Application.objects.filter(workspace_id=workspace_id, id__in=application_ids) |
| 608 | application_task_list = ApplicationTriggerTaskSerializer(applications, many=True).data |
| 609 | tool_task_list = [] |
| 610 | if tool_ids: |
| 611 | tools = Tool.objects.filter(workspace_id=workspace_id, id__in=tool_ids) |
| 612 | workflows = ToolWorkflow.objects.filter( |
| 613 | tool_id__in=tools.filter(tool_type='WORKFLOW').values_list('id', flat=True), |
| 614 | is_publish=True |
| 615 | ) |
| 616 | workflow_dict = {wf.tool_id: wf.work_flow for wf in workflows} |
| 617 | tool_task_list = [] |
| 618 | for tool in tools: |
| 619 | tool_data = { |
| 620 | 'id': str(tool.id), |
| 621 | 'name': tool.name, |
| 622 | 'input_field_list': tool.input_field_list, |
| 623 | 'icon': tool.icon, |
| 624 | 'tool_type': tool.tool_type |
| 625 | } |
| 626 | # 如果是工作流类型,添加 work_flow 字段 |
| 627 | if tool.tool_type == 'WORKFLOW': |
| 628 | tool_data['work_flow'] = workflow_dict.get(tool.id) |
| 629 | tool_task_list.append(tool_data) |
| 630 | return { |
| 631 | **TriggerModelSerializer(trigger).data, |
| 632 | 'trigger_task': trigger_task_list, |
| 633 | 'application_task_list': application_task_list, |
| 634 | 'tool_task_list': tool_task_list, |
| 635 | } |
| 636 | |
| 637 | |
| 638 | class TriggerQuerySerializer(serializers.Serializer): |
no test coverage detected