11from typing import Type
22
3+ from django .db .transaction import atomic
34from django .shortcuts import get_object_or_404
45from rest_framework .response import Response
56from rest_framework .viewsets import ModelViewSet
1213 SponsorRemainingAccountSerializer ,
1314 SponsorSerializer ,
1415)
16+ from sponsor .validators import SponsorValidater
1517
1618
1719class SponsorViewSet (ModelViewSet ):
1820 serializer_class = SponsorSerializer
1921 permission_classes = [IsOwnerOrReadOnly ] # 본인 소유만 수정가능
2022 http_method_names = ["get" , "post" ] # 지금은 조회/등록만 가능 TODO: 추후 수정기능 추가
23+ validator = SponsorValidater ()
2124
2225 def get_queryset (self ):
2326 return Sponsor .objects .all ()
@@ -27,10 +30,14 @@ def list(self, request, *args, **kwargs):
2730 serializer = SponsorListSerializer (queryset , many = True )
2831 return Response (serializer .data )
2932
33+ @atomic
3034 def create (self , request , * args , ** kwargs ):
3135 serializer = self .get_serializer (data = request .data )
3236 serializer .is_valid (raise_exception = True )
33- serializer .save ()
37+ self .validator .assert_create (serializer .validated_data )
38+
39+ new_sponsor = serializer .save ()
40+
3441 return Response (serializer .data )
3542
3643 def retrieve (self , request , * args , ** kwargs ):
0 commit comments