Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions apps/tools/serializers/tool_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,16 +98,26 @@ def get_tool_list(self):
class ToolWorkflowSerializer(serializers.Serializer):
class Operate(serializers.Serializer):
user_id = serializers.UUIDField(required=True, label=_('user id'))
workspace_id = serializers.CharField(required=True, label=_('workspace id'))
workspace_id = serializers.CharField(required=False, label=_('workspace id'))
tool_id = serializers.UUIDField(required=True, label=_('tool id'))

def is_valid(self, *, raise_exception=False):
super().is_valid(raise_exception=True)
workspace_id = self.data.get('workspace_id')
query_set = QuerySet(Tool).filter(id=self.data.get('tool_id'))
if workspace_id:
query_set = query_set.filter(workspace_id=workspace_id)
if not query_set.exists():
raise AppApiException(500, _('Tool id does not exist'))

def debug(self, instance: Dict, user, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
tool_workflow = QuerySet(ToolWorkflow).filter(tool_id=self.data.get("tool_id")).first()
workspace_id = tool_workflow.workspace_id
tool_record_id = instance.get('chat_record_id') or str(uuid.uuid7())
took_execute = ToolExecute(self.data.get("tool_id"), tool_record_id,
self.data.get("workspace_id"),
workspace_id,
None,
None,
True)
Expand All @@ -118,7 +128,7 @@ def debug(self, instance: Dict, user, with_valid=True):
'chat_record_id': tool_record_id,
'tool_id': self.data.get("tool_id"),
'stream': True,
'workspace_id': self.data.get("workspace_id"),
'workspace_id': workspace_id,
**instance},

ToolWorkflowPostHandler(took_execute, self.data.get("tool_id")),
Expand Down Expand Up @@ -146,10 +156,10 @@ def publish(self, with_valid=True):
if with_valid:
self.is_valid()
user_id = self.data.get('user_id')
workspace_id = self.data.get("workspace_id")

user = QuerySet(User).filter(id=user_id).first()
tool_workflow = QuerySet(ToolWorkflow).filter(tool_id=self.data.get("tool_id"),
workspace_id=workspace_id).first()
tool_workflow = QuerySet(ToolWorkflow).filter(tool_id=self.data.get("tool_id")).first()
workspace_id = tool_workflow.workspace_id
work_flow_version = ToolWorkflowVersion(work_flow=tool_workflow.work_flow,
tool_id=self.data.get("tool_id"),
name=timezone.localtime(timezone.now()).strftime(
Expand All @@ -165,19 +175,19 @@ def publish(self, with_valid=True):

def edit(self, instance: Dict):
self.is_valid(raise_exception=True)
tool = QuerySet(Tool).filter(id=self.data.get("tool_id")).first()
workflow_id = tool.workspace_id
if instance.get("work_flow"):
QuerySet(ToolWorkflow).update_or_create(tool_id=self.data.get("tool_id"),
create_defaults={'id': uuid.uuid7(),
'tool_id': self.data.get(
"tool_id"),
"workspace_id": self.data.get(
'workspace_id'),
"workspace_id": workflow_id,
'work_flow': instance.get('work_flow',
{}), },
defaults={
'tool_id': self.data.get("tool_id"),
'workspace_id': self.data.get(
'workspace_id'),
'workspace_id': workflow_id,
'work_flow': instance.get('work_flow')
})
return self.one()
Expand All @@ -189,7 +199,7 @@ def edit(self, instance: Dict):
tool = QuerySet(Tool).filter(id=self.data.get("tool_id")).first()
ToolSerializer.Import(data={
'user_id': self.data.get('user_id'),
'workspace_id': self.data.get('workspace_id'),
'workspace_id': workflow_id,
'folder_id': tool.folder_id,
'file': bytes_to_uploaded_file(res.content, 'file.tool')
}).update_template_workflow(str(self.data.get('tool_id')))
Expand Down
33 changes: 2 additions & 31 deletions apps/tools/views/tool_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@

from application.api.application_api import SpeechToTextAPI
from common.auth import TokenAuth
from common.auth.authentication import has_permissions, get_is_permissions
from common.auth.authentication import has_permissions
from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
from common.log.log import log
from common.result import result, DefaultResultSerializer
from knowledge.api.knowledge_workflow import KnowledgeWorkflowApi
from knowledge.serializers.knowledge_workflow import KnowledgeWorkflowSerializer
from tools.api.tool import GetInternalToolAPI
from tools.api.tool_workflow import ToolWorkflowApi, ToolWorkflowExportApi, ToolWorkflowImportApi
from tools.api.tool_workflow import ToolWorkflowApi
from tools.serializers.tool_workflow import ToolWorkflowSerializer, ToolWorkflowMcpSerializer, StoreToolWorkflow
from tools.views import get_tool_operation_object

Expand Down Expand Up @@ -106,34 +105,6 @@ def get(self, request: Request, workspace_id: str, tool_id: str):
).one())


class KnowledgeWorkflowVersionView(APIView):
authentication_classes = [TokenAuth]

@extend_schema(
methods=['GET'],
description=_('Get tool workflow version list'),
summary=_('Get tool workflow version list'),
operation_id=_('Get tool workflow version list'), # type: ignore
parameters=ToolWorkflowApi.get_parameters(),
responses=ToolWorkflowApi.get_response(),
tags=[_('Tool')] # type: ignore
)
@has_permissions(
PermissionConstants.TOOL_READ.get_workspace_tool_permission(),
PermissionConstants.TOOL_READ.get_workspace_permission_workspace_manage_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
ViewPermission(
[RoleConstants.USER.get_workspace_role()],
[PermissionConstants.TOOL.get_workspace_tool_permission()],
CompareConstants.AND
),
)
def get(self, request: Request, workspace_id: str, tool_id: str):
return result.success(KnowledgeWorkflowSerializer.Operate(
data={'user_id': request.user.id, 'workspace_id': workspace_id, 'tool_id': tool_id}
).one())


class ToolWorkflowDebugView(APIView):
authentication_classes = [TokenAuth]

Expand Down
14 changes: 6 additions & 8 deletions ui/src/views/tool-workflow/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@
<AppIcon iconName="app-add-outlined" class="mr-4" />
{{ $t('workflow.setting.addComponent') }}
</el-button>
<el-button @click="clickShowDebug" :disabled="showDebug" v-if="permissionPrecise.debug(id)">
<el-button @click="clickShowDebug" :disabled="showDebug" v-if="permissionPrecise.read()">
<AppIcon iconName="app-debug-outlined" class="mr-4"></AppIcon>
{{ $t('common.debug') }}
</el-button>
<el-button v-if="permissionPrecise.workflow_edit(id)" @click="saveTool(true)">
<el-button v-if="permissionPrecise.edit(id)" @click="saveTool(true)">
<AppIcon iconName="app-save-outlined" class="mr-4"></AppIcon>
{{ $t('common.save') }}
</el-button>
<el-button type="primary" v-if="permissionPrecise.workflow_edit(id)" @click="publish">
<el-button type="primary" v-if="permissionPrecise.edit(id)" @click="publish">
{{ $t('common.publish') }}
</el-button>

Expand All @@ -58,7 +58,7 @@
<el-dropdown-menu>
<el-dropdown-item
@click.stop="exportToolWorkflow(detail.name, detail.id)"
v-if="permissionPrecise.workflow_export(id)"
v-if="permissionPrecise.export(id)"
>
<AppIcon iconName="app-export" class="color-secondary"></AppIcon>
{{ $t('workflow.operation.exportWorkflow') }}
Expand All @@ -68,7 +68,7 @@
<AppIcon iconName="app-history-outlined" class="color-secondary"></AppIcon>
{{ $t('workflow.setting.releaseHistory') }}
</el-dropdown-item>
<el-dropdown-item v-if="permissionPrecise.workflow_edit(id)">
<el-dropdown-item v-if="permissionPrecise.edit(id)">
<AppIcon iconName="app-save-outlined" class="color-secondary"></AppIcon>
{{ $t('workflow.setting.autoSave') }}
<div class="ml-4">
Expand Down Expand Up @@ -193,15 +193,13 @@ const apiType = computed(() => {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else if (route.path.includes('share/')) {
return 'workspaceShare'
} else {
return 'workspace'
}
})

const permissionPrecise = computed(() => {
return permissionMap['knowledge'][apiType.value]
return permissionMap['tool'][apiType.value]
})

const isDefaultTheme = computed(() => {
Expand Down
Loading