13
13
from rest_framework .response import Response
14
14
from rest_framework .serializers import Serializer
15
15
16
- import custom_view
17
16
from airone .lib .acl import ACLType , get_permitted_objects
18
17
from airone .lib .drf import ObjectNotExistsError , YAMLParser , YAMLRenderer
19
18
from airone .lib .http import http_get
29
28
from entity .models import Entity , EntityAttr
30
29
from entry .api_v2 .serializers import EntryBaseSerializer , EntryCreateSerializer
31
30
from entry .models import Entry
31
+ from job .models import Job
32
32
from user .models import History , User
33
33
34
34
@@ -110,8 +110,8 @@ class EntityAPI(viewsets.ModelViewSet):
110
110
def get_serializer_class (self ):
111
111
serializer = {
112
112
"list" : EntityListSerializer ,
113
- "create" : EntityCreateSerializer ,
114
- "update" : EntityUpdateSerializer ,
113
+ "create" : serializers . Serializer ,
114
+ "update" : serializers . Serializer ,
115
115
}
116
116
return serializer .get (self .action , EntityDetailSerializer )
117
117
@@ -129,9 +129,36 @@ def get_queryset(self):
129
129
130
130
return Entity .objects .filter (** filter_condition ).exclude (** exclude_condition )
131
131
132
- def destroy (self , request , pk ):
132
+ @extend_schema (request = EntityCreateSerializer )
133
+ def create (self , request , * args , ** kwargs ):
134
+ user : User = request .user
135
+
136
+ serializer = EntityCreateSerializer (data = request .data , context = {"_user" : user })
137
+ serializer .is_valid (raise_exception = True )
138
+
139
+ job = Job .new_create_entity_v2 (user , None , params = request .data )
140
+ job .run ()
141
+
142
+ return Response (status = status .HTTP_202_ACCEPTED )
143
+
144
+ @extend_schema (request = EntityUpdateSerializer )
145
+ def update (self , request , * args , ** kwargs ):
146
+ user : User = request .user
133
147
entity : Entity = self .get_object ()
148
+
149
+ serializer = EntityUpdateSerializer (
150
+ instance = entity , data = request .data , context = {"_user" : user }
151
+ )
152
+ serializer .is_valid (raise_exception = True )
153
+
154
+ job = Job .new_edit_entity_v2 (user , entity , params = request .data )
155
+ job .run ()
156
+
157
+ return Response (status = status .HTTP_202_ACCEPTED )
158
+
159
+ def destroy (self , request , * args , ** kwargs ):
134
160
user : User = request .user
161
+ entity : Entity = self .get_object ()
135
162
136
163
if not entity .is_active :
137
164
raise ObjectNotExistsError ("specified entity has already been deleted" )
@@ -141,24 +168,10 @@ def destroy(self, request, pk):
141
168
"cannot delete Entity because one or more Entries are not deleted"
142
169
)
143
170
144
- if custom_view .is_custom ("before_delete_entity_v2" ):
145
- custom_view .call_custom ("before_delete_entity_v2" , None , user , entity )
146
-
147
- # register operation History for deleting entity
148
- history : History = user .seth_entity_del (entity )
149
-
150
- entity .delete ()
151
-
152
- # Delete all attributes which target Entity have
153
- entity_attr : EntityAttr
154
- for entity_attr in entity .attrs .filter (is_active = True ):
155
- history .del_attr (entity_attr )
156
- entity_attr .delete ()
157
-
158
- if custom_view .is_custom ("after_delete_entity_v2" ):
159
- custom_view .call_custom ("after_delete_entity_v2" , None , user , entity )
171
+ job = Job .new_delete_entity_v2 (user , entity , params = request .data )
172
+ job .run ()
160
173
161
- return Response (status = status .HTTP_204_NO_CONTENT )
174
+ return Response (status = status .HTTP_202_ACCEPTED )
162
175
163
176
164
177
class EntityEntryAPI (viewsets .ModelViewSet ):
@@ -172,7 +185,7 @@ class EntityEntryAPI(viewsets.ModelViewSet):
172
185
173
186
def get_serializer_class (self ):
174
187
serializer = {
175
- "create" : EntryCreateSerializer ,
188
+ "create" : serializers . Serializer ,
176
189
}
177
190
return serializer .get (self .action , EntryBaseSerializer )
178
191
@@ -182,9 +195,18 @@ def get_queryset(self):
182
195
raise Http404
183
196
return self .queryset .filter (schema = entity )
184
197
198
+ @extend_schema (request = EntryCreateSerializer )
185
199
def create (self , request , entity_id ):
200
+ user : User = request .user
186
201
request .data ["schema" ] = entity_id
187
- return super ().create (request )
202
+
203
+ serializer = EntryCreateSerializer (data = request .data , context = {"_user" : user })
204
+ serializer .is_valid (raise_exception = True )
205
+
206
+ job = Job .new_create_entry_v2 (user , None , params = request .data )
207
+ job .run ()
208
+
209
+ return Response (status = status .HTTP_202_ACCEPTED )
188
210
189
211
190
212
class EntityHistoryAPI (viewsets .ReadOnlyModelViewSet ):
0 commit comments