Skip to content

Commit f93d7e3

Browse files
committed
feat: implement workflow tool import functionality in tool.py and shared_tool.py
1 parent 6ba6e72 commit f93d7e3

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

apps/tools/serializers/tool.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from common.exception.app_exception import AppApiException
3434
from common.field.common import UploadedImageField
3535
from 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
3737
from common.utils.logger import maxkb_logger
3838
from common.utils.rsa_util import rsa_long_decrypt, rsa_long_encrypt
3939
from common.utils.tool_code import ToolExecutor
@@ -44,7 +44,7 @@
4444
from system_manage.models.resource_mapping import ResourceMapping
4545
from system_manage.serializers.resource_mapping_serializers import ResourceMappingSerializer
4646
from 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
4848
from tools.models.tool_workflow import ToolWorkflow
4949
from trigger.models import TriggerTask, Trigger
5050
from 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

Comments
 (0)