77 @desc:
88"""
99import uuid_utils .compat as uuid
10+ from django .db .models import QuerySet
1011
1112from django .utils .translation import gettext_lazy as _
1213from drf_spectacular .utils import extend_schema
1516
1617from application .api .application_chat import ApplicationChatQueryAPI , ApplicationChatQueryPageAPI , \
1718 ApplicationChatExportAPI
18- from application .models import ChatUserType
19+ from application .models import ChatUserType , Application
1920from application .serializers .application_chat import ApplicationChatQuerySerializers
2021from chat .api .chat_api import ChatAPI , PromptGenerateAPI
2122from chat .api .chat_authentication_api import ChatOpenAPI
2223from chat .serializers .chat import OpenChatSerializers , ChatSerializers , DebugChatSerializers , PromptGenerateSerializer
2324from common .auth import TokenAuth
2425from common .auth .authentication import has_permissions
2526from common .constants .permission_constants import PermissionConstants , RoleConstants , ViewPermission , CompareConstants
27+ from common .log .log import log
2628from common .result import result
2729from common .utils .common import query_params_to_single_dict
2830
31+ def get_application_operation_object (application_id ):
32+ application_model = QuerySet (model = Application ).filter (id = application_id ).first ()
33+ if application_model is not None :
34+ return {
35+ 'name' : application_model .name
36+ }
37+ return {}
2938
3039class ApplicationChat (APIView ):
3140 authentication_classes = [TokenAuth ]
@@ -146,6 +155,7 @@ def post(self, request: Request, chat_id: str):
146155 return DebugChatSerializers (data = {'chat_id' : chat_id }).chat (request .data )
147156
148157class PromptGenerateView (APIView ):
158+ authentication_classes = [TokenAuth ]
149159
150160 @extend_schema (
151161 methods = ['POST' ],
@@ -157,5 +167,13 @@ class PromptGenerateView(APIView):
157167 responses = None ,
158168 tags = [_ ('Application' )] # type: ignore
159169 )
160- def post (self , request : Request , workspace_id : str , model_id :str ):
161- return PromptGenerateSerializer (data = {'workspace_id' : workspace_id , 'model_id' : model_id }).generate_prompt (instance = request .data )
170+ @has_permissions (PermissionConstants .APPLICATION_EDIT .get_workspace_application_permission (),
171+ PermissionConstants .APPLICATION_EDIT .get_workspace_permission_workspace_manage_role (),
172+ ViewPermission ([RoleConstants .USER .get_workspace_role ()],
173+ [PermissionConstants .APPLICATION .get_workspace_application_permission ()],
174+ CompareConstants .AND ),
175+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
176+ @log (menu = 'Application' , operate = 'Generate prompt' ,
177+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' )))
178+ def post (self , request : Request , workspace_id : str , model_id :str , application_id : str ):
179+ return PromptGenerateSerializer (data = {'workspace_id' : workspace_id , 'model_id' : model_id , 'application_id' : application_id }).generate_prompt (instance = request .data )
0 commit comments