1
1
from typing import Type
2
2
3
+ from django .db .transaction import atomic
3
4
from django .shortcuts import get_object_or_404
4
5
from rest_framework .response import Response
5
6
from rest_framework .viewsets import ModelViewSet
12
13
SponsorRemainingAccountSerializer ,
13
14
SponsorSerializer ,
14
15
)
16
+ from sponsor .validators import SponsorValidater
15
17
16
18
17
19
class SponsorViewSet (ModelViewSet ):
18
20
serializer_class = SponsorSerializer
19
21
permission_classes = [IsOwnerOrReadOnly ] # 본인 소유만 수정가능
20
22
http_method_names = ["get" , "post" ] # 지금은 조회/등록만 가능 TODO: 추후 수정기능 추가
23
+ validator = SponsorValidater ()
21
24
22
25
def get_queryset (self ):
23
26
return Sponsor .objects .all ()
@@ -27,10 +30,14 @@ def list(self, request, *args, **kwargs):
27
30
serializer = SponsorListSerializer (queryset , many = True )
28
31
return Response (serializer .data )
29
32
33
+ @atomic
30
34
def create (self , request , * args , ** kwargs ):
31
35
serializer = self .get_serializer (data = request .data )
32
36
serializer .is_valid (raise_exception = True )
33
- serializer .save ()
37
+ self .validator .assert_create (serializer .validated_data )
38
+
39
+ new_sponsor = serializer .save ()
40
+
34
41
return Response (serializer .data )
35
42
36
43
def retrieve (self , request , * args , ** kwargs ):
0 commit comments