3030 ToolTriggerTaskSerializer , TriggerTaskModelSerializer
3131
3232
33+ class TaskSourceTriggerTaskEditRequest (serializers .Serializer ):
34+ meta = serializers .DictField (default = dict , required = False )
35+ parameter = serializers .DictField (default = dict , required = False )
36+
37+
38+ class TaskSourceTriggerEditRequest (serializers .Serializer ):
39+ name = serializers .CharField (required = False , label = _ ('trigger name' ))
40+ desc = serializers .CharField (required = False , allow_null = True , allow_blank = True , label = _ ('trigger description' ))
41+ trigger_type = serializers .ChoiceField (required = False , choices = TriggerTypeChoices )
42+ trigger_setting = serializers .DictField (required = False , label = _ ("trigger setting" ))
43+ meta = serializers .DictField (default = dict , required = False )
44+ trigger_task = TaskSourceTriggerTaskEditRequest (many = True , required = False )
45+
46+
3347class TaskSourceTriggerSerializer (serializers .Serializer ):
3448 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
3549 user_id = serializers .UUIDField (required = True , label = _ ("User ID" ))
@@ -42,7 +56,6 @@ def insert(self, instance, with_valid=True):
4256
4357class TaskSourceTriggerOperateSerializer (serializers .Serializer ):
4458 trigger_id = serializers .UUIDField (required = True , label = _ ('trigger id' ))
45- user_id = serializers .UUIDField (required = True , label = _ ("User ID" ))
4659 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
4760 source_type = serializers .CharField (required = True , label = _ ('source type' ))
4861 source_id = serializers .CharField (required = True , label = _ ('source id' ))
@@ -85,14 +98,49 @@ def one(self, with_valid=True):
8598 'application_task' : tool_task ,
8699 }
87100
88- def edit (self , instance : Dict , with_valid = True ):
101+ @transaction .atomic
102+ def edit (self , instance : Dict , with_valid = True ):
89103 if with_valid :
90104 self .is_valid (raise_exception = True )
105+ serializer = TaskSourceTriggerEditRequest (data = instance )
106+ serializer .is_valid (raise_exception = True )
107+ valid_data = serializer .validated_data
108+ trigger_id = self .data .get ('trigger_id' )
109+ workspace_id = self .data .get ('workspace_id' )
91110
111+ trigger = Trigger .objects .filter (workspace_id = workspace_id , id = trigger_id ).first ()
112+ if not trigger :
113+ raise serializers .ValidationError (_ ('Trigger not found' ))
114+ task_source_trigger_edit_field_list = ['name' , 'desc' , 'trigger_type' , 'trigger_setting' , 'meta' ]
92115
116+ for field in task_source_trigger_edit_field_list :
117+ if field in valid_data :
118+ setattr (trigger , field , valid_data .get (field ))
119+ trigger .save ()
93120
121+ return self .one ()
94122
123+ # 删除的是当前trigger_id+source_id+source_type对应的task
124+ @transaction .atomic
125+ def delete (self ):
126+ self .is_valid (raise_exception = True )
127+ trigger_id = self .data .get ('trigger_id' )
128+ workspace_id = self .data .get ('workspace_id' )
129+ source_id = self .data .get ('source_id' )
130+ source_type = self .data .get ('source_type' )
95131
132+ trigger = Trigger .objects .filter (workspace_id = workspace_id ,id = trigger_id ).first ()
133+ if not trigger :
134+ raise AppApiException (404 , _ ('Trigger not found' ))
135+ delete_count = TriggerTask .objects .filter (trigger_id = trigger_id , source_id = source_id ,
136+ source_type = source_type ).delete ()[0 ]
137+ if delete_count == 0 :
138+ raise AppApiException (404 , _ ('Task not found' ))
139+ has_other_tasks = TriggerTask .objects .filter (trigger_id = trigger_id ).exists ()
140+
141+ if not has_other_tasks :
142+ trigger .delete ()
143+ return True
96144
97145class TaskSourceTriggerListSerializer (serializers .Serializer ):
98146 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
0 commit comments