fix: workflow tool no session_id

pull/20190/head
Will 1 year ago
parent cbfc32b11f
commit 22d6cec527

@ -1,10 +1,11 @@
import json import json
import logging import logging
from collections.abc import Generator from collections.abc import Generator
from typing import Any, Optional, cast from typing import Any, Optional, Union, cast
from flask_login import current_user from flask_login import current_user
from core.app.entities.app_invoke_entities import InvokeFrom
from core.file import FILE_MODEL_IDENTITY, File, FileTransferMethod from core.file import FILE_MODEL_IDENTITY, File, FileTransferMethod
from core.tools.__base.tool import Tool from core.tools.__base.tool import Tool
from core.tools.__base.tool_runtime import ToolRuntime from core.tools.__base.tool_runtime import ToolRuntime
@ -89,7 +90,7 @@ class WorkflowTool(Tool):
result = generator.generate( result = generator.generate(
app_model=app, app_model=app,
workflow=workflow, workflow=workflow,
user=cast("Account | EndUser", current_user), user=self._get_user(user_id, self.runtime.invoke_from),
args={"inputs": tool_parameters, "files": files}, args={"inputs": tool_parameters, "files": files},
invoke_from=self.runtime.invoke_from, invoke_from=self.runtime.invoke_from,
streaming=False, streaming=False,
@ -113,6 +114,19 @@ class WorkflowTool(Tool):
yield self.create_text_message(json.dumps(outputs, ensure_ascii=False)) yield self.create_text_message(json.dumps(outputs, ensure_ascii=False))
yield self.create_json_message(outputs) yield self.create_json_message(outputs)
def _get_user(self, user_id: str, invoke_from: InvokeFrom) -> Union[EndUser, Account]:
"""
get the user by user id
"""
if invoke_from in {InvokeFrom.SERVICE_API, InvokeFrom.WEB_APP}:
user = db.session.query(EndUser).filter(EndUser.id == user_id).first()
else:
user = cast(Account, current_user)
if not user:
raise ValueError("user not found")
return user
def fork_tool_runtime(self, runtime: ToolRuntime) -> "WorkflowTool": def fork_tool_runtime(self, runtime: ToolRuntime) -> "WorkflowTool":
""" """
fork a new tool with metadata fork a new tool with metadata

Loading…
Cancel
Save