|
|
|
@ -28,6 +28,7 @@ from extensions.ext_database import db
|
|
|
|
from models.account import Account
|
|
|
|
from models.account import Account
|
|
|
|
from models.enums import CreatedByRole
|
|
|
|
from models.enums import CreatedByRole
|
|
|
|
from models.model import App, AppMode
|
|
|
|
from models.model import App, AppMode
|
|
|
|
|
|
|
|
from models.tools import WorkflowToolProvider
|
|
|
|
from models.workflow import (
|
|
|
|
from models.workflow import (
|
|
|
|
Workflow,
|
|
|
|
Workflow,
|
|
|
|
WorkflowNodeExecution,
|
|
|
|
WorkflowNodeExecution,
|
|
|
|
@ -523,8 +524,19 @@ class WorkflowService:
|
|
|
|
# Cannot delete a workflow that's currently in use by an app
|
|
|
|
# Cannot delete a workflow that's currently in use by an app
|
|
|
|
raise WorkflowInUseError(f"Cannot delete workflow that is currently in use by app '{app.name}'")
|
|
|
|
raise WorkflowInUseError(f"Cannot delete workflow that is currently in use by app '{app.name}'")
|
|
|
|
|
|
|
|
|
|
|
|
# Check if this workflow is published as a tool
|
|
|
|
# Don't use workflow.tool_published as it's not accurate for specific workflow versions
|
|
|
|
if workflow.tool_published:
|
|
|
|
# Check if there's a tool provider using this specific workflow version
|
|
|
|
|
|
|
|
tool_provider = (
|
|
|
|
|
|
|
|
session.query(WorkflowToolProvider)
|
|
|
|
|
|
|
|
.filter(
|
|
|
|
|
|
|
|
WorkflowToolProvider.tenant_id == workflow.tenant_id,
|
|
|
|
|
|
|
|
WorkflowToolProvider.app_id == workflow.app_id,
|
|
|
|
|
|
|
|
WorkflowToolProvider.version == workflow.version,
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
.first()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if tool_provider:
|
|
|
|
# Cannot delete a workflow that's published as a tool
|
|
|
|
# Cannot delete a workflow that's published as a tool
|
|
|
|
raise WorkflowInUseError("Cannot delete workflow that is published as a tool")
|
|
|
|
raise WorkflowInUseError("Cannot delete workflow that is published as a tool")
|
|
|
|
|
|
|
|
|
|
|
|
|