11# coding=utf-8
22
3- from django .utils .translation import gettext_lazy as _
4- from drf_spectacular .utils import extend_schema
5- from rest_framework .request import Request
6- from rest_framework .views import APIView
7-
83from application .api .application_api import SpeechToTextAPI
94from common .auth import TokenAuth
105from common .auth .authentication import has_permissions
11- from common .constants .permission_constants import PermissionConstants , RoleConstants , ViewPermission , CompareConstants
6+ from common .constants .permission_constants import CompareConstants , PermissionConstants , RoleConstants , ViewPermission
127from common .log .log import log
13- from common .result import result , DefaultResultSerializer
8+ from common .result import DefaultResultSerializer , result
9+ from django .utils .translation import gettext_lazy as _
10+ from drf_spectacular .utils import extend_schema
1411from knowledge .api .knowledge_workflow import KnowledgeWorkflowApi
12+ from rest_framework .request import Request
13+ from rest_framework .views import APIView
14+
1515from tools .api .tool import GetInternalToolAPI
1616from tools .api .tool_workflow import ToolWorkflowApi
17- from tools .serializers .tool_workflow import ToolWorkflowSerializer , ToolWorkflowMcpSerializer , StoreToolWorkflow
17+ from tools .serializers .tool_workflow import StoreToolWorkflow , ToolWorkflowMcpSerializer , ToolWorkflowSerializer
1818from tools .views import get_tool_operation_object
1919
2020
@@ -25,41 +25,53 @@ class Publish(APIView):
2525 authentication_classes = [TokenAuth ]
2626
2727 @extend_schema (
28- methods = [' PUT' ],
28+ methods = [" PUT" ],
2929 description = _ ("Publishing an tool" ),
3030 summary = _ ("Publishing an tool" ),
3131 operation_id = _ ("Publishing an tool" ), # type: ignore
3232 parameters = ToolWorkflowApi .get_parameters (),
3333 request = None ,
3434 responses = DefaultResultSerializer ,
35- tags = [_ ('Tool' )] # type: ignore
35+ tags = [_ ("Tool" )], # type: ignore
36+ )
37+ @has_permissions (
38+ PermissionConstants .TOOL_PUBLISH .get_workspace_tool_permission (),
39+ PermissionConstants .TOOL_PUBLISH .get_workspace_permission_workspace_manage_role (),
40+ ViewPermission (
41+ [RoleConstants .USER .get_workspace_role ()],
42+ [PermissionConstants .TOOL .get_workspace_tool_permission ()],
43+ CompareConstants .AND ,
44+ ),
45+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role (),
46+ )
47+ @log (
48+ menu = "Tool" ,
49+ operate = "Publishing an tool" ,
50+ get_operation_object = lambda r , k : get_tool_operation_object (k .get ("tool_id" )),
3651 )
37- @has_permissions (PermissionConstants .TOOL_PUBLISH .get_workspace_tool_permission (),
38- PermissionConstants .TOOL_PUBLISH .get_workspace_permission_workspace_manage_role (),
39- ViewPermission ([RoleConstants .USER .get_workspace_role ()],
40- [PermissionConstants .TOOL .get_workspace_tool_permission ()],
41- CompareConstants .AND ),
42- RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
43- @log (menu = 'Tool' , operate = 'Publishing an tool' ,
44- get_operation_object = lambda r , k : get_tool_operation_object (k .get ('tool_id' )))
4552 def put (self , request : Request , workspace_id : str , tool_id : str ):
4653 return result .success (
4754 ToolWorkflowSerializer .Operate (
48- data = {'tool_id' : tool_id , 'user_id' : request .user .id ,
49- 'workspace_id' : workspace_id , }).publish ())
55+ data = {
56+ "tool_id" : tool_id ,
57+ "user_id" : request .user .id ,
58+ "workspace_id" : workspace_id ,
59+ }
60+ ).publish ()
61+ )
5062
5163 class Operate (APIView ):
5264 authentication_classes = [TokenAuth ]
5365
5466 @extend_schema (
55- methods = [' PUT' ],
56- description = _ (' Edit tool workflow' ),
57- summary = _ (' Edit tool workflow' ),
58- operation_id = _ (' Edit tool workflow' ), # type: ignore
67+ methods = [" PUT" ],
68+ description = _ (" Edit tool workflow" ),
69+ summary = _ (" Edit tool workflow" ),
70+ operation_id = _ (" Edit tool workflow" ), # type: ignore
5971 parameters = ToolWorkflowApi .get_parameters (),
6072 request = ToolWorkflowApi .get_request (),
6173 responses = ToolWorkflowApi .get_response (),
62- tags = [_ (' Tool' )] # type: ignore
74+ tags = [_ (" Tool" )], # type: ignore
6375 )
6476 @has_permissions (
6577 PermissionConstants .TOOL_EDIT .get_workspace_tool_permission (),
@@ -68,26 +80,29 @@ class Operate(APIView):
6880 ViewPermission (
6981 [RoleConstants .USER .get_workspace_role ()],
7082 [PermissionConstants .TOOL .get_workspace_tool_permission ()],
71- CompareConstants .AND
72- )
83+ CompareConstants .AND ,
84+ ),
7385 )
7486 @log (
75- menu = 'Tool' , operate = "Modify tool workflow" ,
76- get_operation_object = lambda r , k : get_tool_operation_object (k .get ('tool_id' )),
87+ menu = "Tool" ,
88+ operate = "Modify tool workflow" ,
89+ get_operation_object = lambda r , k : get_tool_operation_object (k .get ("tool_id" )),
7790 )
7891 def put (self , request : Request , workspace_id : str , tool_id : str ):
79- return result .success (ToolWorkflowSerializer .Operate (
80- data = {'user_id' : request .user .id , 'workspace_id' : workspace_id , 'tool_id' : tool_id }
81- ).edit (request .data ))
92+ return result .success (
93+ ToolWorkflowSerializer .Operate (
94+ data = {"user_id" : request .user .id , "workspace_id" : workspace_id , "tool_id" : tool_id }
95+ ).edit (request .data )
96+ )
8297
8398 @extend_schema (
84- methods = [' GET' ],
85- description = _ (' Get tool workflow' ),
86- summary = _ (' Get tool workflow' ),
87- operation_id = _ (' Get tool workflow' ), # type: ignore
99+ methods = [" GET" ],
100+ description = _ (" Get tool workflow" ),
101+ summary = _ (" Get tool workflow" ),
102+ operation_id = _ (" Get tool workflow" ), # type: ignore
88103 parameters = KnowledgeWorkflowApi .get_parameters (),
89104 responses = KnowledgeWorkflowApi .get_response (),
90- tags = [_ (' Tool' )] # type: ignore
105+ tags = [_ (" Tool" )], # type: ignore
91106 )
92107 @has_permissions (
93108 PermissionConstants .TOOL_READ .get_workspace_tool_permission (),
@@ -96,26 +111,28 @@ def put(self, request: Request, workspace_id: str, tool_id: str):
96111 ViewPermission (
97112 [RoleConstants .USER .get_workspace_role ()],
98113 [PermissionConstants .TOOL .get_workspace_tool_permission ()],
99- CompareConstants .AND
114+ CompareConstants .AND ,
100115 ),
101116 )
102117 def get (self , request : Request , workspace_id : str , tool_id : str ):
103- return result .success (ToolWorkflowSerializer .Operate (
104- data = {'user_id' : request .user .id , 'workspace_id' : workspace_id , 'tool_id' : tool_id }
105- ).one ())
118+ return result .success (
119+ ToolWorkflowSerializer .Operate (
120+ data = {"user_id" : request .user .id , "workspace_id" : workspace_id , "tool_id" : tool_id }
121+ ).one ()
122+ )
106123
107124
108125class ToolWorkflowDebugView (APIView ):
109126 authentication_classes = [TokenAuth ]
110127
111128 @extend_schema (
112- methods = [' POST' ],
113- description = _ (' tool workflow debug' ),
114- summary = _ (' tool workflow debug' ),
115- operation_id = _ (' tool workflow debug' ), # type: ignore
129+ methods = [" POST" ],
130+ description = _ (" tool workflow debug" ),
131+ summary = _ (" tool workflow debug" ),
132+ operation_id = _ (" tool workflow debug" ), # type: ignore
116133 parameters = ToolWorkflowApi .get_parameters (),
117134 responses = ToolWorkflowApi .get_response (),
118- tags = [_ (' Tool' )] # type: ignore
135+ tags = [_ (" Tool" )], # type: ignore
119136 )
120137 @has_permissions (
121138 PermissionConstants .TOOL_EDIT .get_workspace_tool_permission (),
@@ -124,56 +141,68 @@ class ToolWorkflowDebugView(APIView):
124141 ViewPermission (
125142 [RoleConstants .USER .get_workspace_role ()],
126143 [PermissionConstants .TOOL .get_workspace_tool_permission ()],
127- CompareConstants .AND
144+ CompareConstants .AND ,
128145 ),
129146 )
130147 def post (self , request : Request , workspace_id : str , tool_id : str ):
131148 return ToolWorkflowSerializer .Operate (
132- data = {'workspace_id' : workspace_id , 'tool_id' : tool_id , 'user_id' : request .user .id }).debug (
133- request .data ,
134- request .user ,
135- True )
149+ data = {"workspace_id" : workspace_id , "tool_id" : tool_id , "user_id" : request .user .id }
150+ ).debug (request .data , request .user , True )
136151
137152
138153class McpServers (APIView ):
139154 authentication_classes = [TokenAuth ]
140155
141156 @extend_schema (
142- methods = [' GET' ],
157+ methods = [" GET" ],
143158 description = _ ("Get the list of MCP tools" ),
144159 summary = _ ("Get the list of MCP tools" ),
145160 operation_id = _ ("Get the list of MCP tools" ), # type: ignore
146161 parameters = SpeechToTextAPI .get_parameters (),
147162 request = SpeechToTextAPI .get_request (),
148163 responses = SpeechToTextAPI .get_response (),
149- tags = [_ ('Tool' )] # type: ignore
164+ tags = [_ ("Tool" )], # type: ignore
165+ )
166+ @has_permissions (
167+ PermissionConstants .TOOL_READ .get_workspace_tool_permission (),
168+ PermissionConstants .TOOL_READ .get_workspace_permission_workspace_manage_role (),
169+ ViewPermission (
170+ [RoleConstants .USER .get_workspace_role ()],
171+ [PermissionConstants .TOOL .get_workspace_tool_permission ()],
172+ CompareConstants .AND ,
173+ ),
174+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role (),
150175 )
151- @has_permissions (PermissionConstants .TOOL_READ .get_workspace_tool_permission (),
152- PermissionConstants .TOOL_READ .get_workspace_permission_workspace_manage_role (),
153- ViewPermission ([RoleConstants .USER .get_workspace_role ()],
154- [PermissionConstants .TOOL .get_workspace_tool_permission ()],
155- CompareConstants .AND ),
156- RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
157176 def post (self , request : Request , workspace_id , tool_id : str ):
158- return result .success (ToolWorkflowMcpSerializer (
159- data = {'mcp_servers' : request .query_params .get ('mcp_servers' ), 'workspace_id' : workspace_id ,
160- 'user_id' : request .user .id ,
161- 'tool_id' : tool_id }).get_mcp_servers (request .data ))
177+ return result .success (
178+ ToolWorkflowMcpSerializer (
179+ data = {
180+ "mcp_servers" : request .query_params .get ("mcp_servers" ),
181+ "workspace_id" : workspace_id ,
182+ "user_id" : request .user .id ,
183+ "tool_id" : tool_id ,
184+ }
185+ ).get_mcp_servers (request .data )
186+ )
162187
163188
164189class StoreToolWorkflowView (APIView ):
165190 authentication_classes = [TokenAuth ]
166191
167192 @extend_schema (
168- methods = [' GET' ],
193+ methods = [" GET" ],
169194 description = _ ("Get Appstore tools" ),
170195 summary = _ ("Get Appstore tools" ),
171196 operation_id = _ ("Get Appstore tools" ), # type: ignore
172197 responses = GetInternalToolAPI .get_response (),
173- tags = [_ ("Tool" )] # type: ignore
198+ tags = [_ ("Tool" )], # type: ignore
174199 )
175200 def get (self , request : Request ):
176- return result .success (StoreToolWorkflow (data = {
177- 'user_id' : request .user .id ,
178- 'name' : request .query_params .get ('name' , '' ),
179- }).get_appstore_templates ())
201+ return result .success (
202+ StoreToolWorkflow (
203+ data = {
204+ "user_id" : request .user .id ,
205+ "name" : request .query_params .get ("name" , "" ),
206+ }
207+ ).get_appstore_templates ()
208+ )
0 commit comments