feat: consolidate module and tool views by removing redundant classes and updating API endpoints

This commit is contained in:
CaptainB 2025-04-21 10:45:04 +08:00 committed by 刘瑞斌
parent 39841cb344
commit a8cda7d4a4
5 changed files with 57 additions and 67 deletions

View File

@ -4,7 +4,6 @@ from . import views
app_name = "module"
urlpatterns = [
path('workspace/<str:workspace_id>/<str:source>/module', views.ModuleView.Create.as_view()),
path('workspace/<str:workspace_id>/<str:source>/module', views.ModuleTreeView.as_view()),
path('workspace/<str:workspace_id>/<str:source>/module', views.ModuleView.as_view()),
path('workspace/<str:workspace_id>/<str:source>/module/<str:module_id>', views.ModuleView.Operate.as_view()),
]

View File

@ -12,24 +12,36 @@ from modules.serializers.module import ModuleSerializer, ModuleTreeSerializer
class ModuleView(APIView):
class Create(APIView):
authentication_classes = [TokenAuth]
authentication_classes = [TokenAuth]
@extend_schema(methods=['POST'],
description=_('Create module'),
operation_id=_('Create module'),
parameters=ModuleCreateAPI.get_parameters(),
request=ModuleCreateAPI.get_request(),
responses=ModuleCreateAPI.get_response(),
tags=[_('Module')])
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.CREATE,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
def post(self, request: Request, workspace_id: str, source: str):
return result.success(ModuleSerializer.Create(
data={'user_id': request.user.id,
'source': source,
'workspace_id': workspace_id}
).insert(request.data))
@extend_schema(methods=['POST'],
description=_('Create module'),
operation_id=_('Create module'),
parameters=ModuleCreateAPI.get_parameters(),
request=ModuleCreateAPI.get_request(),
responses=ModuleCreateAPI.get_response(),
tags=[_('Module')])
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.CREATE,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
def post(self, request: Request, workspace_id: str, source: str):
return result.success(ModuleSerializer.Create(
data={'user_id': request.user.id,
'source': source,
'workspace_id': workspace_id}
).insert(request.data))
@extend_schema(methods=['GET'],
description=_('Get module tree'),
operation_id=_('Get module tree'),
parameters=ModuleTreeReadAPI.get_parameters(),
responses=ModuleTreeReadAPI.get_response(),
tags=[_('Module')])
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.READ,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
def get(self, request: Request, workspace_id: str, source: str):
return result.success(ModuleTreeSerializer(
data={'workspace_id': workspace_id, 'source': source}
).get_module_tree(request.query_params.get('name')))
class Operate(APIView):
authentication_classes = [TokenAuth]
@ -73,20 +85,3 @@ class ModuleView(APIView):
return result.success(ModuleSerializer.Operate(
data={'id': module_id, 'workspace_id': workspace_id, 'source': source}
).delete())
class ModuleTreeView(APIView):
authentication_classes = [TokenAuth]
@extend_schema(methods=['GET'],
description=_('Get module tree'),
operation_id=_('Get module tree'),
parameters=ModuleTreeReadAPI.get_parameters(),
responses=ModuleTreeReadAPI.get_response(),
tags=[_('Module')])
@has_permissions(lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.READ,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}"))
def get(self, request: Request, workspace_id: str, source: str):
return result.success(ModuleTreeSerializer(
data={'workspace_id': workspace_id, 'source': source}
).get_module_tree(request.query_params.get('name')))

View File

@ -88,6 +88,6 @@ class ToolTreeReadAPI(APIMixin):
description="模块id",
type=OpenApiTypes.STR,
location='query',
required=True,
required=False,
)
]

View File

@ -4,7 +4,6 @@ from . import views
app_name = "tool"
urlpatterns = [
path('workspace/<str:workspace_id>/tool', views.ToolView.Create.as_view()),
path('workspace/<str:workspace_id>/tool', views.ToolTreeView.as_view()),
path('workspace/<str:workspace_id>/tool', views.ToolView.as_view()),
path('workspace/<str:workspace_id>/tool/<str:tool_id>', views.ToolView.Operate.as_view()),
]

View File

@ -12,21 +12,32 @@ from tools.serializers.tool import ToolSerializer, ToolTreeSerializer
class ToolView(APIView):
class Create(APIView):
authentication_classes = [TokenAuth]
authentication_classes = [TokenAuth]
@extend_schema(methods=['POST'],
description=_('Create tool'),
operation_id=_('Create tool'),
parameters=ToolCreateAPI.get_parameters(),
request=ToolCreateAPI.get_request(),
responses=ToolCreateAPI.get_response(),
tags=[_('Tool')])
@has_permissions(PermissionConstants.TOOL_CREATE.get_workspace_permission())
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))
@extend_schema(methods=['POST'],
description=_('Create tool'),
operation_id=_('Create tool'),
parameters=ToolCreateAPI.get_parameters(),
request=ToolCreateAPI.get_request(),
responses=ToolCreateAPI.get_response(),
tags=[_('Tool')])
@has_permissions(PermissionConstants.TOOL_CREATE.get_workspace_permission())
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))
@extend_schema(methods=['GET'],
description=_('Get tool by module'),
operation_id=_('Get tool by module'),
parameters=ToolTreeReadAPI.get_parameters(),
responses=ToolTreeReadAPI.get_response(),
tags=[_('Tool')])
@has_permissions(PermissionConstants.TOOL_READ.get_workspace_permission())
def get(self, request: Request, workspace_id: str):
return result.success(ToolTreeSerializer(
data={'workspace_id': workspace_id}
).get_tools(request.query_params.get('module_id')))
class Operate(APIView):
authentication_classes = [TokenAuth]
@ -69,17 +80,3 @@ class ToolView(APIView):
).delete())
class ToolTreeView(APIView):
authentication_classes = [TokenAuth]
@extend_schema(methods=['GET'],
description=_('Get tool by module'),
operation_id=_('Get tool by module'),
parameters=ToolTreeReadAPI.get_parameters(),
responses=ToolTreeReadAPI.get_response(),
tags=[_('Tool')])
@has_permissions(PermissionConstants.TOOL_READ.get_workspace_permission())
def get(self, request: Request, workspace_id: str):
return result.success(ToolTreeSerializer(
data={'workspace_id': workspace_id}
).get_tools(request.query_params.get('module_id')))