From 64e26dd2ccd2b43dbc53691557a229a6950e5256 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Wed, 4 Jun 2025 19:00:10 +0800 Subject: [PATCH] feat: change icon edit method from POST to PUT for tools and shared tools --- apps/tools/api/tool.py | 39 +++++++++++++++++++++++++++++++++++++++ apps/tools/views/tool.py | 12 +++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/apps/tools/api/tool.py b/apps/tools/api/tool.py index f7dbd1ca2..9bd982c11 100644 --- a/apps/tools/api/tool.py +++ b/apps/tools/api/tool.py @@ -236,3 +236,42 @@ class PylintAPI(APIMixin): @staticmethod def get_request(): return PylintInstance + + +class EditIconAPI(APIMixin): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="tool_id", + description="工具id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + ] + + @staticmethod + def get_request(): + return { + 'multipart/form-data': { + 'type': 'object', + 'properties': { + 'icon': { + 'type': 'string', + 'format': 'binary' # Tells Swagger it's a file + } + } + } + } + + @staticmethod + def get_response(): + return DefaultResultSerializer \ No newline at end of file diff --git a/apps/tools/views/tool.py b/apps/tools/views/tool.py index 52194cc4d..14123dc5d 100644 --- a/apps/tools/views/tool.py +++ b/apps/tools/views/tool.py @@ -9,7 +9,7 @@ from common.auth.authentication import has_permissions from common.constants.permission_constants import PermissionConstants from common.result import result from tools.api.tool import ToolCreateAPI, ToolEditAPI, ToolReadAPI, ToolDeleteAPI, ToolTreeReadAPI, ToolDebugApi, \ - ToolExportAPI, ToolImportAPI, ToolPageAPI, PylintAPI + ToolExportAPI, ToolImportAPI, ToolPageAPI, PylintAPI, EditIconAPI from tools.serializers.tool import ToolSerializer, ToolTreeSerializer @@ -198,6 +198,16 @@ class ToolView(APIView): authentication_classes = [TokenAuth] parser_classes = [MultiPartParser] + @extend_schema( + methods=['PUT'], + summary=_('Edit tool icon'), + operation_id=_('Edit tool icon'), # type: ignore + description=_('Edit tool icon'), + request=EditIconAPI.get_request(), + responses=EditIconAPI.get_response(), + parameters=EditIconAPI.get_parameters(), + tags=[_('Tool')] # type: ignore + ) @has_permissions(PermissionConstants.TOOL_EDIT.get_workspace_permission()) def put(self, request: Request, id: str, workspace_id: str): return result.success(ToolSerializer.IconOperate(data={