66 @date:2025/5/26 16:51
77 @desc:
88"""
9+ from django .db .models import QuerySet
910from django .utils .translation import gettext_lazy as _
1011from drf_spectacular .utils import extend_schema
1112from rest_framework .parsers import MultiPartParser
1415
1516from application .api .application_api import ApplicationCreateAPI , ApplicationQueryAPI , ApplicationImportAPI , \
1617 ApplicationExportAPI , ApplicationOperateAPI , ApplicationEditAPI
18+ from application .models import Application
1719from application .serializers .application import ApplicationSerializer , Query , ApplicationOperateSerializer
1820from common import result
1921from common .auth import TokenAuth
2022from common .auth .authentication import has_permissions
2123from common .constants .permission_constants import PermissionConstants
24+ from common .log .log import log
25+
26+
27+ def get_application_operation_object (application_id ):
28+ application_model = QuerySet (model = Application ).filter (id = application_id ).first ()
29+ if application_model is not None :
30+ return {
31+ 'name' : application_model .name
32+ }
33+ return {}
2234
2335
2436class Application (APIView ):
@@ -35,6 +47,8 @@ class Application(APIView):
3547 tags = [_ ('Application' )] # type: ignore
3648 )
3749 @has_permissions (PermissionConstants .APPLICATION_READ .get_workspace_permission ())
50+ @log (menu = 'Application' , operate = 'Create an application' ,
51+ get_operation_object = lambda r ,k : {'name' : r .data .get ('name' )})
3852 def post (self , request : Request , workspace_id : str ):
3953 return result .success (
4054 ApplicationSerializer (data = {'workspace_id' : workspace_id , 'user_id' : request .user .id }).insert (request .data ))
@@ -85,11 +99,14 @@ class Import(APIView):
8599 tags = [_ ('Application' )] # type: ignore
86100 )
87101 @has_permissions (PermissionConstants .APPLICATION_READ )
102+ @log (menu = 'Application' , operate = "Import Application" )
88103 def post (self , request : Request , workspace_id : str ):
89104 return result .success (ApplicationSerializer (
90105 data = {'user_id' : request .user .id , 'workspace_id' : workspace_id ,
91106 }).import_ ({'file' : request .FILES .get ('file' )}))
92107
108+
109+
93110 class Export (APIView ):
94111 authentication_classes = [TokenAuth ]
95112
@@ -104,6 +121,8 @@ class Export(APIView):
104121 tags = [_ ('Application' )] # type: ignore
105122 )
106123 @has_permissions (PermissionConstants .APPLICATION_EXPORT .get_workspace_application_permission ())
124+ @log (menu = 'Application' , operate = "Export Application" ,
125+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' )))
107126 def post (self , request : Request , workspace_id : str , application_id : str ):
108127 return ApplicationOperateSerializer (
109128 data = {'application_id' : application_id ,
@@ -122,6 +141,9 @@ class Operate(APIView):
122141 tags = [_ ('Application' )] # type: ignore
123142 )
124143 @has_permissions (PermissionConstants .APPLICATION_DELETE .get_workspace_application_permission ())
144+ @log (menu = 'Application' , operate = 'Deleting application' ,
145+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' ))
146+ )
125147 def delete (self , request : Request , workspace_id : str , application_id : str ):
126148 return result .success (ApplicationOperateSerializer (
127149 data = {'application_id' : application_id , 'user_id' : request .user .id }).delete (
@@ -138,6 +160,8 @@ def delete(self, request: Request, workspace_id: str, application_id: str):
138160 tags = [_ ('Application' )] # type: ignore
139161 )
140162 @has_permissions (PermissionConstants .APPLICATION_EDIT .get_workspace_application_permission ())
163+ @log (menu = 'Application' , operate = "Modify the application" ,
164+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' )))
141165 def put (self , request : Request , workspace_id : str , application_id : str ):
142166 return result .success (
143167 ApplicationOperateSerializer (
@@ -172,6 +196,9 @@ class Publish(APIView):
172196 responses = result .DefaultResultSerializer ,
173197 tags = [_ ('Application' )] # type: ignore
174198 )
199+ @log (menu = 'Application' , operate = 'Publishing an application' ,
200+ get_operation_object = lambda r ,k : get_application_operation_object (k .get ('application_id' ))
201+ )
175202 def put (self , request : Request , application_id : str ):
176203 return result .success (
177204 ApplicationOperateSerializer (
0 commit comments