diff --git a/apps/trigger/api/trigger.py b/apps/trigger/api/trigger.py index b8232ca7526..a854322e91d 100644 --- a/apps/trigger/api/trigger.py +++ b/apps/trigger/api/trigger.py @@ -25,7 +25,7 @@ def get_parameters(): type=OpenApiTypes.STR, location='path', required=True, - ) + ), ] @staticmethod @@ -36,6 +36,44 @@ def get_request(): def get_response(): return TriggerResponse +class TaskSourceTriggerCreateAPI(APIMixin): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="source_id", + description="资源id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="source_type", + description="资源类型", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + ] + + @staticmethod + def get_request(): + return TriggerCreateRequest + + @staticmethod + def get_response(): + return TriggerResponse + + + + class TriggerBatchDeleteAPI(APIMixin): @staticmethod def get_parameters(): diff --git a/apps/trigger/serializers/task_source_trigger.py b/apps/trigger/serializers/task_source_trigger.py index ff1f682c253..0e183164d4e 100644 --- a/apps/trigger/serializers/task_source_trigger.py +++ b/apps/trigger/serializers/task_source_trigger.py @@ -51,12 +51,18 @@ class TaskSourceTriggerSerializer(serializers.Serializer): def insert(self, instance, with_valid=True): if with_valid: self.is_valid(raise_exception=True) - return TriggerSerializer().insert(instance, with_valid=True) + if not len(instance.get("trigger_task")) == 1: + raise AppApiException(500, _('Trigger task number must be one')) + + return TriggerSerializer(data={ + 'workspace_id': self.data.get('workspace_id'), + 'user_id': self.data.get('user_id') + }).insert(instance, with_valid=True) class TaskSourceTriggerOperateSerializer(serializers.Serializer): trigger_id = serializers.UUIDField(required=True, label=_('trigger id')) - workspace_id = serializers.CharField(required=True, label=_('workspace id')) + workspace_id = serializers.CharField(required=False, label=_('workspace id')) source_type = serializers.CharField(required=True, label=_('source type')) source_id = serializers.CharField(required=True, label=_('source id')) diff --git a/apps/trigger/views/trigger.py b/apps/trigger/views/trigger.py index eaee5b203d5..2a6c7229ecf 100644 --- a/apps/trigger/views/trigger.py +++ b/apps/trigger/views/trigger.py @@ -14,12 +14,13 @@ from application.api.application_api import ApplicationCreateAPI from common import result from common.auth import TokenAuth +from common.result import DefaultResultSerializer from trigger.serializers.task_source_trigger import TaskSourceTriggerListSerializer, TaskSourceTriggerOperateSerializer, \ TaskSourceTriggerSerializer from trigger.serializers.trigger import TriggerQuerySerializer, TriggerOperateSerializer from trigger.api.trigger import TriggerCreateAPI, TriggerOperateAPI, TriggerEditAPI, TriggerBatchDeleteAPI, \ - TriggerBatchActiveAPI, TaskSourceTriggerOperateAPI, TaskSourceTriggerAPI + TriggerBatchActiveAPI, TaskSourceTriggerOperateAPI, TaskSourceTriggerAPI, TaskSourceTriggerCreateAPI from trigger.serializers.trigger import TriggerSerializer @@ -171,12 +172,12 @@ class TaskSourceTriggerView(APIView): @extend_schema( methods=['POST'], - description=_('Create trigger of source'), - summary=_('Create trigger of source'), - operation_id=_('Create trigger of source'), # type: ignore - parameters=TaskSourceTriggerAPI.get_parameters(), - request=TaskSourceTriggerAPI.get_request(), - responses=TaskSourceTriggerAPI.get_response(), + description=_('Create trigger in source'), + summary=_('Create trigger in source'), + operation_id=_('Create trigger in source'), # type: ignore + parameters=TaskSourceTriggerCreateAPI.get_parameters(), + request=TaskSourceTriggerCreateAPI.get_request(), + responses=TaskSourceTriggerCreateAPI.get_response(), tags=[_('Trigger')] # type: ignore ) def post(self, request: Request, workspace_id: str, source_type: str, source_id: str): @@ -184,6 +185,7 @@ def post(self, request: Request, workspace_id: str, source_type: str, source_id: 'workspace_id': workspace_id, 'user_id': request.user.id }).insert({**request.data, 'source_id': source_id, + 'workspace_id': workspace_id, 'source_type': source_type})) @extend_schema( @@ -192,7 +194,7 @@ def post(self, request: Request, workspace_id: str, source_type: str, source_id: summary=_('Get the trigger list of source'), operation_id=_('Get the trigger list of source'), # type: ignore parameters=TaskSourceTriggerAPI.get_parameters(), - responses=result.DefaultResultSerializer, + responses=DefaultResultSerializer, tags=[_('Trigger')] # type: ignore ) def get(self, request: Request, workspace_id: str, source_type: str, source_id: str):