Skip to content

Commit 23b8433

Browse files
committed
사용하지 않는 SponsorListViewSet 제거 및 viewset 쿼리에 year 추가
1 parent 21267ab commit 23b8433

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

sponsor/viewsets.py

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from django.db.transaction import atomic
44
from django.shortcuts import get_object_or_404
5-
from rest_framework import status
5+
from rest_framework import mixins, status, viewsets
66
from rest_framework.response import Response
77
from rest_framework.viewsets import ModelViewSet, ViewSet
88

@@ -19,21 +19,25 @@
1919
from sponsor.validators import SponsorValidater
2020

2121

22-
class SponsorViewSet(ModelViewSet):
22+
class SponsorViewSet(
23+
mixins.CreateModelMixin,
24+
mixins.RetrieveModelMixin,
25+
mixins.UpdateModelMixin,
26+
mixins.ListModelMixin,
27+
viewsets.GenericViewSet,
28+
):
29+
queryset = Sponsor.objects.all()
2330
serializer_class = SponsorSerializer
2431
permission_classes = [IsOwnerOrReadOnly] # 본인 소유만 수정 가능
25-
http_method_names = ["get", "post", "put"]
2632
validator = SponsorValidater()
2733

2834
def get_queryset(self):
29-
return Sponsor.objects.all().order_by("paid_at")
35+
return super().get_queryset().filter(paid_at__isnull=False, level__year=self.request.version).order_by("level__order", "paid_at")
3036

31-
def list(self, request, *args, **kwargs):
32-
queryset = Sponsor.objects.filter(paid_at__isnull=False).order_by(
33-
"level", "paid_at"
34-
)
35-
serializer = SponsorListSerializer(queryset, many=True)
36-
return Response(serializer.data)
37+
def get_serializer_class(self):
38+
if self.action == "list":
39+
return SponsorListSerializer
40+
return SponsorSerializer
3741

3842
@atomic
3943
def create(self, request, *args, **kwargs):
@@ -54,7 +58,7 @@ def create(self, request, *args, **kwargs):
5458

5559
def retrieve(self, request, *args, **kwargs):
5660
pk = kwargs["id"]
57-
sponsor_data = get_object_or_404(Sponsor, pk=pk)
61+
sponsor_data = get_object_or_404(self.get_queryset(), pk=pk)
5862

5963
# 본인 소유인 경우는 모든 필드
6064
# 그렇지 않은 경우는 공개 가능한 필드만 응답
@@ -86,20 +90,6 @@ def update(self, request, *args, **kwargs):
8690
return Response(serializer.errors, status.HTTP_400_BAD_REQUEST)
8791

8892

89-
class SponsorListViewSet(ModelViewSet):
90-
serializer_class = SponsorListSerializer
91-
http_method_names = ["get"]
92-
93-
def get_queryset(self):
94-
return SponsorLevel.objects.all()
95-
96-
def list(self, request, *args, **kwargs):
97-
queryset = SponsorLevel.objects.all().order_by("-price")
98-
serializer = SponsorListSerializer(queryset, many=True)
99-
100-
return Response(serializer.data)
101-
102-
10393
class SponsorRemainingAccountViewSet(ModelViewSet):
10494
serializer_class = SponsorRemainingAccountSerializer
10595
http_method_names = ["get"]

0 commit comments

Comments
 (0)