Skip to content

Commit 1eb4d2c

Browse files
committed
Feature: Add SponsorLevelViewSet
1 parent 32afbbe commit 1eb4d2c

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

sponsor/routers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
def get_router():
77
router = DefaultRouter()
8+
router.register("prospectus", SponsorLevelViewSet, basename="prospectus")
89
router.register("", SponsorViewSet, basename="sponsor")
910

1011
return router

sponsor/serializers.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
from rest_framework.fields import SerializerMethodField
12
from rest_framework.serializers import ModelSerializer
23

3-
from sponsor.models import Sponsor
4+
from sponsor.models import Sponsor, SponsorLevel
45

56

67
class SponsorSerializer(ModelSerializer):
@@ -31,3 +32,21 @@ class Meta:
3132
"logo_image",
3233
"id",
3334
]
35+
36+
37+
class SponsorLevelSerializer(ModelSerializer):
38+
remaining = SerializerMethodField()
39+
40+
class Meta:
41+
model = SponsorLevel
42+
fields = [
43+
"name",
44+
"price",
45+
"desc",
46+
"limit",
47+
"remaining",
48+
"id",
49+
]
50+
51+
def get_remaining(self, obj):
52+
return obj.current_remaining_number

sponsor/viewsets.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from django.shortcuts import get_object_or_404
2-
from rest_framework.permissions import IsAuthenticatedOrReadOnly
32
from rest_framework.response import Response
43
from rest_framework.viewsets import ModelViewSet
54

6-
from sponsor.models import Sponsor
5+
from sponsor.models import Sponsor, SponsorLevel
76
from sponsor.permissions import IsOwnerOrReadOnly, OwnerOnly
8-
from sponsor.serializers import SponsorListSerializer, SponsorSerializer
7+
from sponsor.serializers import SponsorListSerializer, SponsorSerializer, SponsorLevelSerializer
98

109

1110
class SponsorViewSet(ModelViewSet):
@@ -45,3 +44,17 @@ def check_owner_permission(self, request, sponsor_data: Sponsor):
4544
return OwnerOnly.has_object_permission(
4645
self=OwnerOnly, request=request, view=self, obj=sponsor_data
4746
)
47+
48+
49+
class SponsorLevelViewSet(ModelViewSet):
50+
serializer_class = SponsorLevelSerializer
51+
http_method_names = ["get"]
52+
53+
def get_queryset(self):
54+
return SponsorLevel.objects.all()
55+
56+
def list(self, request, *args, **kwargs):
57+
queryset = SponsorLevel.objects.all().order_by("-price")
58+
serializer = SponsorLevelSerializer(queryset, many=True)
59+
60+
return Response(serializer.data)

0 commit comments

Comments
 (0)