@@ -98,16 +98,26 @@ def get_tool_list(self):
9898class ToolWorkflowSerializer (serializers .Serializer ):
9999 class Operate (serializers .Serializer ):
100100 user_id = serializers .UUIDField (required = True , label = _ ('user id' ))
101- workspace_id = serializers .CharField (required = True , label = _ ('workspace id' ))
101+ workspace_id = serializers .CharField (required = False , label = _ ('workspace id' ))
102102 tool_id = serializers .UUIDField (required = True , label = _ ('tool id' ))
103103
104+ def is_valid (self , * , raise_exception = False ):
105+ super ().is_valid (raise_exception = True )
106+ workspace_id = self .data .get ('workspace_id' )
107+ query_set = QuerySet (Tool ).filter (id = self .data .get ('tool_id' ))
108+ if workspace_id :
109+ query_set = query_set .filter (workspace_id = workspace_id )
110+ if not query_set .exists ():
111+ raise AppApiException (500 , _ ('Tool id does not exist' ))
112+
104113 def debug (self , instance : Dict , user , with_valid = True ):
105114 if with_valid :
106115 self .is_valid (raise_exception = True )
107116 tool_workflow = QuerySet (ToolWorkflow ).filter (tool_id = self .data .get ("tool_id" )).first ()
117+ workspace_id = tool_workflow .workspace_id
108118 tool_record_id = instance .get ('chat_record_id' ) or str (uuid .uuid7 ())
109119 took_execute = ToolExecute (self .data .get ("tool_id" ), tool_record_id ,
110- self . data . get ( " workspace_id" ) ,
120+ workspace_id ,
111121 None ,
112122 None ,
113123 True )
@@ -118,7 +128,7 @@ def debug(self, instance: Dict, user, with_valid=True):
118128 'chat_record_id' : tool_record_id ,
119129 'tool_id' : self .data .get ("tool_id" ),
120130 'stream' : True ,
121- 'workspace_id' : self . data . get ( " workspace_id" ) ,
131+ 'workspace_id' : workspace_id ,
122132 ** instance },
123133
124134 ToolWorkflowPostHandler (took_execute , self .data .get ("tool_id" )),
@@ -146,10 +156,10 @@ def publish(self, with_valid=True):
146156 if with_valid :
147157 self .is_valid ()
148158 user_id = self .data .get ('user_id' )
149- workspace_id = self . data . get ( "workspace_id" )
159+
150160 user = QuerySet (User ).filter (id = user_id ).first ()
151- tool_workflow = QuerySet (ToolWorkflow ).filter (tool_id = self .data .get ("tool_id" ),
152- workspace_id = workspace_id ). first ()
161+ tool_workflow = QuerySet (ToolWorkflow ).filter (tool_id = self .data .get ("tool_id" )). first ()
162+ workspace_id = tool_workflow . workspace_id
153163 work_flow_version = ToolWorkflowVersion (work_flow = tool_workflow .work_flow ,
154164 tool_id = self .data .get ("tool_id" ),
155165 name = timezone .localtime (timezone .now ()).strftime (
@@ -165,19 +175,19 @@ def publish(self, with_valid=True):
165175
166176 def edit (self , instance : Dict ):
167177 self .is_valid (raise_exception = True )
178+ tool = QuerySet (Tool ).filter (id = self .data .get ("tool_id" )).first ()
179+ workflow_id = tool .workspace_id
168180 if instance .get ("work_flow" ):
169181 QuerySet (ToolWorkflow ).update_or_create (tool_id = self .data .get ("tool_id" ),
170182 create_defaults = {'id' : uuid .uuid7 (),
171183 'tool_id' : self .data .get (
172184 "tool_id" ),
173- "workspace_id" : self .data .get (
174- 'workspace_id' ),
185+ "workspace_id" : workflow_id ,
175186 'work_flow' : instance .get ('work_flow' ,
176187 {}), },
177188 defaults = {
178189 'tool_id' : self .data .get ("tool_id" ),
179- 'workspace_id' : self .data .get (
180- 'workspace_id' ),
190+ 'workspace_id' : workflow_id ,
181191 'work_flow' : instance .get ('work_flow' )
182192 })
183193 return self .one ()
@@ -189,7 +199,7 @@ def edit(self, instance: Dict):
189199 tool = QuerySet (Tool ).filter (id = self .data .get ("tool_id" )).first ()
190200 ToolSerializer .Import (data = {
191201 'user_id' : self .data .get ('user_id' ),
192- 'workspace_id' : self . data . get ( 'workspace_id' ) ,
202+ 'workspace_id' : workflow_id ,
193203 'folder_id' : tool .folder_id ,
194204 'file' : bytes_to_uploaded_file (res .content , 'file.tool' )
195205 }).update_template_workflow (str (self .data .get ('tool_id' )))
0 commit comments