diff --git a/apps/trigger/serializers/trigger_task.py b/apps/trigger/serializers/trigger_task.py index e25ce44de7d..2c24fb15ed9 100644 --- a/apps/trigger/serializers/trigger_task.py +++ b/apps/trigger/serializers/trigger_task.py @@ -18,7 +18,7 @@ from common.exception.app_exception import AppApiException from common.utils.common import get_file_content from maxkb.conf import PROJECT_DIR -from trigger.models import TriggerTask, TaskRecord +from trigger.models import TriggerTask, TaskRecord, Trigger class ChatRecordSerializerModel(serializers.ModelSerializer): @@ -38,7 +38,16 @@ class Meta: class TriggerTaskQuerySerializer(serializers.Serializer): trigger_id = serializers.CharField(required=True, label=_("Trigger ID")) - workspace_id = serializers.CharField(required=True, label=_('workspace id')) + workspace_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Workspace ID")) + + def is_valid(self, *, raise_exception=False): + super().is_valid(raise_exception=True) + workspace_id = self.data.get('workspace_id') + query_set = QuerySet(Trigger).filter(id=self.data.get('trigger_id')) + if workspace_id: + query_set = query_set.filter(workspace_id=workspace_id) + if not query_set.exists(): + raise AppApiException(500, _('Trigger id does not exist')) def get_query_set(self): query_set = QuerySet(TriggerTask).filter(workspace_id=self.data.get("workspace_id")).filter( @@ -53,10 +62,19 @@ def list(self, with_valid=True): class TriggerTaskRecordOperateSerializer(serializers.Serializer): trigger_id = serializers.CharField(required=True, label=_("Trigger ID")) - workspace_id = serializers.CharField(required=True, label=_('workspace id')) + workspace_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Workspace ID")) trigger_task_id = serializers.CharField(required=True, label=_("Trigger task ID")) trigger_task_record_id = serializers.CharField(required=True, label=_("Trigger task record ID")) + def is_valid(self, *, raise_exception=False): + super().is_valid(raise_exception=True) + workspace_id = self.data.get('workspace_id') + query_set = QuerySet(Trigger).filter(id=self.data.get('trigger_id')) + if workspace_id: + query_set = query_set.filter(workspace_id=workspace_id) + if not query_set.exists(): + raise AppApiException(500, _('Trigger id does not exist')) + def get_execution_details(self, is_valid=True): if is_valid: self.is_valid(raise_exception=True) @@ -75,11 +93,20 @@ def get_execution_details(self, is_valid=True): class TriggerTaskRecordQuerySerializer(serializers.Serializer): trigger_id = serializers.CharField(required=True, label=_("Trigger ID")) - workspace_id = serializers.CharField(required=True, label=_('workspace id')) + workspace_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Workspace ID")) state = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_('Trigger state')) name = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_('Trigger name')) order = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('Order field')) + def is_valid(self, *, raise_exception=False): + super().is_valid(raise_exception=True) + workspace_id = self.data.get('workspace_id') + query_set = QuerySet(Trigger).filter(id=self.data.get('trigger_id')) + if workspace_id: + query_set = query_set.filter(workspace_id=workspace_id) + if not query_set.exists(): + raise AppApiException(500, _('Trigger id does not exist')) + def get_query_set(self): trigger_query_set = QuerySet( model=get_dynamics_model({