From 44645734f5ed3243a9cb177a4440a8fa68708064 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:30:36 +0800 Subject: [PATCH] fix: There is a tool node in the application - the tool node has startup parameters - after importing, the tool should be disabled (#3821) --- apps/application/serializers/application.py | 7 ++++--- apps/tools/serializers/tool.py | 10 +++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/application/serializers/application.py b/apps/application/serializers/application.py index ca4cf5dc4..4678995b7 100644 --- a/apps/application/serializers/application.py +++ b/apps/application/serializers/application.py @@ -45,7 +45,7 @@ from models_provider.tools import get_model_instance_by_model_workspace_id from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer from tools.models import Tool, ToolScope -from tools.serializers.tool import ToolModelSerializer +from tools.serializers.tool import ToolExportModelSerializer from users.models import User from users.serializers.user import is_workspace_manage @@ -554,6 +554,7 @@ class ApplicationSerializer(serializers.Serializer): @param tool: 工具 @return: """ + return Tool(id=tool.get('id'), user_id=user_id, name=tool.get('name'), @@ -561,7 +562,7 @@ class ApplicationSerializer(serializers.Serializer): template_id=tool.get('template_id'), input_field_list=tool.get('input_field_list'), init_field_list=tool.get('init_field_list'), - is_active=tool.get('is_active'), + is_active=tool.get('is_active') if len((tool.get('init_field_list') or [])) > 0 else False, scope=ToolScope.WORKSPACE, folder_id=workspace_id, workspace_id=workspace_id) @@ -682,7 +683,7 @@ class ApplicationOperateSerializer(serializers.Serializer): mk_instance = MKInstance(application_dict, [], 'v2', - [ToolModelSerializer(tool).data for tool in + [ToolExportModelSerializer(tool).data for tool in tool_list]) application_pickle = pickle.dumps(mk_instance) response = HttpResponse(content_type='text/plain', content=application_pickle) diff --git a/apps/tools/serializers/tool.py b/apps/tools/serializers/tool.py index c2cf6d4fc..7cb9b71fd 100644 --- a/apps/tools/serializers/tool.py +++ b/apps/tools/serializers/tool.py @@ -110,6 +110,14 @@ class ToolModelSerializer(serializers.ModelSerializer): 'create_time', 'update_time'] +class ToolExportModelSerializer(serializers.ModelSerializer): + class Meta: + model = Tool + fields = ['id', 'name', 'icon', 'desc', 'code', 'input_field_list', 'init_field_list', + 'scope', 'is_active', 'user_id', 'template_id', 'workspace_id', 'folder_id', 'tool_type', 'label', + 'create_time', 'update_time'] + + class UploadedFileField(serializers.FileField): def __init__(self, **kwargs): super().__init__(**kwargs) @@ -376,7 +384,7 @@ class ToolSerializer(serializers.Serializer): self.is_valid() id = self.data.get('id') tool = QuerySet(Tool).filter(id=id).first() - tool_dict = ToolModelSerializer(tool).data + tool_dict = ToolExportModelSerializer(tool).data mk_instance = ToolInstance(tool_dict, 'v2') tool_pickle = pickle.dumps(mk_instance) response = HttpResponse(content_type='text/plain', content=tool_pickle)