fix: workflow as api error AnonymousUserMixin has no session_id

pull/20218/head
joevyzhou 1 year ago
parent 3995f55cbc
commit 3b771e1a2e

@ -5,6 +5,7 @@ from typing import Any, Optional, 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
@ -86,10 +87,12 @@ class WorkflowTool(Tool):
assert self.runtime is not None assert self.runtime is not None
assert self.runtime.invoke_from is not None assert self.runtime.invoke_from is not None
invoke_user = current_user if self.runtime.invoke_from != InvokeFrom.SERVICE_API else self._get_user(user_id)
result = generator.generate( result = generator.generate(
app_model=app, app_model=app,
workflow=workflow, workflow=workflow,
user=cast("Account | EndUser", current_user), user=cast("Account | EndUser", invoke_user),
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 +116,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)
@classmethod
def _get_user(cls, user_id: str) -> EndUser:
"""
get the user by user id
"""
user = db.session.query(EndUser).filter(EndUser.id == user_id).first()
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