From 5cb7fc8d9a3a6a35fdf3050c3f906209b508c206 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Thu, 5 Jun 2025 11:10:25 +0800 Subject: [PATCH] feat: refactor shared tool API to utilize ToolSerializer for create, update, and import operations --- apps/tools/serializers/tool.py | 6 +++--- apps/tools/views/tool.py | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/tools/serializers/tool.py b/apps/tools/serializers/tool.py index 072c15062..76fada5e0 100644 --- a/apps/tools/serializers/tool.py +++ b/apps/tools/serializers/tool.py @@ -210,7 +210,7 @@ class ToolSerializer(serializers.Serializer): user_id=self.data.get('user_id'), input_field_list=instance.get('input_field_list', []), init_field_list=instance.get('init_field_list', []), - scope=ToolScope.WORKSPACE, + scope=instance.get('scope', ToolScope.WORKSPACE), folder_id=instance.get('folder_id', 'root'), is_active=False) tool.save() @@ -371,7 +371,7 @@ class ToolSerializer(serializers.Serializer): # @transaction.atomic - def import_(self): + def import_(self, scope=ToolScope.WORKSPACE): self.is_valid() user_id = self.data.get('user_id') @@ -389,7 +389,7 @@ class ToolSerializer(serializers.Serializer): user_id=user_id, input_field_list=tool.get('input_field_list'), init_field_list=tool.get('init_field_list', []), - scope=ToolScope.WORKSPACE, + scope=scope, is_active=False ) tool_model.save() diff --git a/apps/tools/views/tool.py b/apps/tools/views/tool.py index 39a0e0d2c..70484edf2 100644 --- a/apps/tools/views/tool.py +++ b/apps/tools/views/tool.py @@ -10,6 +10,7 @@ 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, EditIconAPI +from tools.models import ToolScope from tools.serializers.tool import ToolSerializer, ToolTreeSerializer @@ -30,7 +31,7 @@ class ToolView(APIView): def post(self, request: Request, workspace_id: str): return result.success(ToolSerializer.Create( data={'user_id': request.user.id, 'workspace_id': workspace_id} - ).insert(request.data)) + ).insert({**request.data, 'scope': ToolScope.WORKSPACE})) @extend_schema( methods=['GET'], @@ -155,7 +156,7 @@ class ToolView(APIView): def post(self, request: Request, workspace_id: str): return result.success(ToolSerializer.Import( data={'workspace_id': workspace_id, 'file': request.FILES.get('file'), 'user_id': request.user.id} - ).import_()) + ).import_(ToolScope.WORKSPACE)) class Export(APIView): authentication_classes = [TokenAuth]