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
@@ -103,6 +120,8 @@ class Export(APIView):
103120 tags = [_ ('Application' )] # type: ignore
104121 )
105122 @has_permissions (PermissionConstants .APPLICATION_EXPORT .get_workspace_application_permission ())
123+ @log (menu = 'Application' , operate = "Export Application" ,
124+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' )))
106125 def post (self , request : Request , workspace_id : str , application_id : str ):
107126 return ApplicationOperateSerializer (
108127 data = {'application_id' : application_id ,
@@ -121,6 +140,9 @@ class Operate(APIView):
121140 tags = [_ ('Application' )] # type: ignore
122141 )
123142 @has_permissions (PermissionConstants .APPLICATION_DELETE .get_workspace_application_permission ())
143+ @log (menu = 'Application' , operate = 'Deleting application' ,
144+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' ))
145+ )
124146 def delete (self , request : Request , workspace_id : str , application_id : str ):
125147 return result .success (ApplicationOperateSerializer (
126148 data = {'application_id' : application_id , 'user_id' : request .user .id }).delete (
@@ -137,6 +159,8 @@ def delete(self, request: Request, workspace_id: str, application_id: str):
137159 tags = [_ ('Application' )] # type: ignore
138160 )
139161 @has_permissions (PermissionConstants .APPLICATION_EDIT .get_workspace_application_permission ())
162+ @log (menu = 'Application' , operate = "Modify the application" ,
163+ get_operation_object = lambda r , k : get_application_operation_object (k .get ('application_id' )))
140164 def put (self , request : Request , workspace_id : str , application_id : str ):
141165 return result .success (
142166 ApplicationOperateSerializer (
@@ -171,6 +195,9 @@ class Publish(APIView):
171195 responses = result .DefaultResultSerializer ,
172196 tags = [_ ('Application' )] # type: ignore
173197 )
198+ @log (menu = 'Application' , operate = 'Publishing an application' ,
199+ get_operation_object = lambda r ,k : get_application_operation_object (k .get ('application_id' ))
200+ )
174201 def put (self , request : Request , application_id : str ):
175202 return result .success (
176203 ApplicationOperateSerializer (
0 commit comments