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

Class TriggerOperateSerializer

apps/trigger/serializers/trigger.py:500–635  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

498
499
500class TriggerOperateSerializer(serializers.Serializer):
501 trigger_id = serializers.UUIDField(required=True, label=_('trigger id'))
502 user_id = serializers.UUIDField(required=True, label=_("User ID"))
503 workspace_id = serializers.CharField(required=True, label=_('workspace id'))
504
505 def is_valid(self, *, raise_exception=False):
506 super().is_valid(raise_exception=True)
507 workspace_id = self.data.get('workspace_id')
508 query_set = QuerySet(Trigger).filter(id=self.data.get('trigger_id'))
509 if workspace_id:
510 query_set = query_set.filter(workspace_id=workspace_id)
511 if not query_set.exists():
512 raise AppApiException(500, _('Trigger id does not exist'))
513
514 @transaction.atomic
515 def edit(self, instance: Dict, with_valid=True):
516 from trigger.handler.simple_tools import deploy, undeploy
517
518 if with_valid:
519 self.is_valid()
520 TriggerEditRequest(data=instance).is_valid(raise_exception=True)
521 trigger_id = self.data.get('trigger_id')
522 workspace_id = self.data.get('workspace_id')
523 trigger = Trigger.objects.filter(workspace_id=workspace_id, id=trigger_id).first()
524 if not trigger:
525 raise serializers.ValidationError(_('Trigger not found'))
526
527 trigger_direct_edit_field_list = ['name', 'desc', 'trigger_type', 'trigger_setting', 'meta', 'is_active']
528 trigger_deploy_edit_field_list = ['trigger_type', 'trigger_setting', 'is_active']
529 # is need to redeploy
530 need_redeploy = any(field in instance for field in trigger_deploy_edit_field_list)
531
532 for field in trigger_direct_edit_field_list:
533 if field in instance:
534 trigger.__setattr__(field, instance.get(field))
535 trigger.save()
536 # 处理trigger task
537 trigger_tasks = instance.get('trigger_task')
538
539 if trigger_tasks is not None:
540 # 检查是否为空列表
541 if not trigger_tasks:
542 raise serializers.ValidationError(_('Trigger must have at least one task'))
543
544 is_active_map = TriggerSerializer.batch_get_source_active_status(trigger_tasks)
545
546 trigger_task_model_list = [TriggerTask(
547 id=task_data.get('id') or uuid.uuid7(),
548 trigger_id=trigger_id,
549 source_type=task_data.get('source_type'),
550 source_id=task_data.get('source_id'),
551 is_active=is_active_map.get((task_data.get('source_type'), task_data.get('source_id'))) or False,
552 parameter=task_data.get('parameter', []),
553 meta=task_data.get('meta', {})
554 ) for task_data in trigger_tasks]
555
556 TriggerTask.objects.filter(trigger_id=trigger_id).delete()
557

Callers 3

getMethod · 0.90
putMethod · 0.90
deleteMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected