3333from common .exception .app_exception import AppApiException
3434from common .field .common import UploadedImageField
3535from common .result import result
36- from common .utils .common import get_file_content , generate_uuid
36+ from common .utils .common import get_file_content , generate_uuid , bytes_to_uploaded_file
3737from common .utils .logger import maxkb_logger
3838from common .utils .rsa_util import rsa_long_decrypt , rsa_long_encrypt
3939from common .utils .tool_code import ToolExecutor
4444from system_manage .models .resource_mapping import ResourceMapping
4545from system_manage .serializers .resource_mapping_serializers import ResourceMappingSerializer
4646from system_manage .serializers .user_resource_permission import UserResourcePermissionSerializer
47- from tools .models import Tool , ToolScope , ToolFolder , ToolType , ToolRecord
47+ from tools .models import Tool , ToolScope , ToolFolder , ToolType , ToolRecord , ToolWorkflowVersion
4848from tools .models .tool_workflow import ToolWorkflow
4949from trigger .models import TriggerTask , Trigger
5050from users .serializers .user import is_workspace_manage
@@ -1070,6 +1070,13 @@ def add(self, instance: Dict, with_valid=True):
10701070 )
10711071 tool .save ()
10721072
1073+ if tool_data .get ('tool_type' ) == ToolType .WORKFLOW :
1074+ tool_data ['id' ] = tool_id
1075+ ToolSerializer .Import (
1076+ data = {'file' : bytes_to_uploaded_file (b'' ), ** self .data },
1077+ ).import_workflow_tools (
1078+ tool_data , workspace_id = self .data .get ('workspace_id' ), user_id = self .data .get ('user_id' )
1079+ )
10731080 # 自动授权给创建者
10741081 UserResourcePermissionSerializer (data = {
10751082 'workspace_id' : self .data .get ('workspace_id' ),
@@ -1091,6 +1098,7 @@ class UpdateStoreTool(serializers.Serializer):
10911098 icon = serializers .CharField (required = True , label = _ ("icon" ), allow_null = True , allow_blank = True )
10921099 versions = serializers .ListField (required = True , label = _ ("versions" ), child = serializers .DictField ())
10931100
1101+ @transaction .atomic
10941102 def update_tool (self , with_valid = True ):
10951103 if with_valid :
10961104 self .is_valid (raise_exception = True )
@@ -1124,6 +1132,16 @@ def update_tool(self, with_valid=True):
11241132 tool .version = version_name
11251133 # tool.is_active = False
11261134 tool .save ()
1135+
1136+ if tool_data .get ('tool_type' ) == ToolType .WORKFLOW :
1137+ tool_data ['id' ] = tool .id
1138+ QuerySet (ToolWorkflow ).filter (tool_id = tool_data ['id' ]).delete ()
1139+ QuerySet (ToolWorkflowVersion ).filter (tool_id = tool_data ['id' ]).delete ()
1140+ ToolSerializer .Import (
1141+ data = {'file' : bytes_to_uploaded_file (b'' ), ** self .data },
1142+ ).import_workflow_tools (
1143+ tool_data , workspace_id = self .data .get ('workspace_id' ), user_id = self .data .get ('user_id' )
1144+ )
11271145 try :
11281146 requests .get (self .data .get ('download_callback_url' ), timeout = 5 )
11291147 except Exception as e :
0 commit comments