@@ -151,7 +151,6 @@ class TriggerEditRequest(serializers.Serializer):
151151 trigger_type = serializers .ChoiceField (required = False , choices = TriggerTypeChoices )
152152 trigger_setting = serializers .DictField (required = False , label = _ ("trigger setting" ))
153153 meta = serializers .DictField (default = dict , required = False )
154- is_active = serializers .BooleanField (required = False , label = _ ('Is active' ))
155154 trigger_task = TriggerTaskEditRequest (many = True , required = False )
156155
157156
@@ -341,7 +340,7 @@ def insert(self, instance, with_valid=True):
341340 trigger_type = valid_data .get ('trigger_type' ),
342341 trigger_setting = valid_data .get ('trigger_setting' ),
343342 meta = valid_data .get ('meta' , {}),
344- is_active = False ,
343+ is_active = valid_data . get ( 'is_active' ) or False ,
345344 user_id = self .data .get ('user_id' ),
346345 )
347346 trigger_model .save ()
@@ -358,18 +357,37 @@ def insert(self, instance, with_valid=True):
358357
359358 return TriggerResponse (trigger_model ).data
360359
361- @staticmethod
362- def to_trigger_task_model (trigger_id : str , task_data : dict ):
360+ def to_trigger_task_model (self , trigger_id : str , task_data : dict ):
361+ source_type = task_data .get ('source_type' )
362+ source_id = task_data .get ('source_id' )
363+ is_active = self .is_active_source (source_type ,source_id )
363364 return TriggerTask (
364365 id = uuid .uuid7 (),
365366 trigger_id = trigger_id ,
366- source_type = task_data . get ( ' source_type' ) ,
367- source_id = task_data . get ( ' source_id' ) ,
368- is_active = task_data . get ( ' is_active' , False ) ,
367+ source_type = source_type ,
368+ source_id = source_id ,
369+ is_active = is_active ,
369370 parameter = task_data .get ('parameter' , {}),
370371 meta = task_data .get ('meta' , {})
371372 )
372373
374+ @staticmethod
375+ def is_active_source (source_type : str , source_id : str ):
376+
377+ config = {
378+ TriggerTaskTypeChoices .APPLICATION : (Application , 'is_publish' ),
379+ TriggerTaskTypeChoices .TOOL : (Tool , 'is_active' ),
380+ }
381+ if source_type not in config :
382+ raise AppApiException (500 , _ ('Error source type' ))
383+ source_model ,field = config .get (TriggerTaskTypeChoices (source_type ))
384+ source = QuerySet (source_model ).filter (id = source_id ).first ()
385+ if not source :
386+ raise AppApiException (500 , _ (f'{ source_type } id does not exist' ))
387+
388+ return getattr (source ,field )
389+
390+
373391 class Batch (serializers .Serializer ):
374392 workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
375393 user_id = serializers .UUIDField (required = True , label = _ ("User ID" ))
0 commit comments