Skip to content

Commit 30c09b7

Browse files
committed
Feat: 후원 등급 관리를 위한 API 구현
1 parent cf5ea23 commit 30c09b7

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed

sponsor/serializers.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,19 @@ class Meta:
2828
]
2929

3030

31+
class SponsorLevelSerializer(serializers.ModelSerializer):
32+
class Meta:
33+
model = SponsorLevel
34+
fields = [
35+
"name",
36+
"desc",
37+
"visible",
38+
"price",
39+
"limit",
40+
"order",
41+
]
42+
43+
3144
class SponsorDetailSerializer(serializers.ModelSerializer):
3245
creator_userid = serializers.SerializerMethodField()
3346

sponsor/urls.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.urls import path
22

3-
from sponsor.viewsets import PatronListViewSet, SponsorViewSet
3+
from sponsor.viewsets import PatronListViewSet, SponsorViewSet, SponsorLevelViewSet
44

55
urlpatterns = [
66
path("list/", SponsorViewSet.as_view({"get": "list"})),
@@ -12,4 +12,14 @@
1212
"patron/list/",
1313
PatronListViewSet.as_view({"get": "list"}),
1414
),
15+
path(
16+
"levels",
17+
SponsorLevelViewSet.as_view({"get": "list", "post": "create"}),
18+
),
19+
path(
20+
"levels/<int:id>/",
21+
SponsorLevelViewSet.as_view(
22+
{"get": "retrieve", "delete": "destroy", "put": "update"}
23+
),
24+
),
1525
]

sponsor/viewsets.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,50 @@
1414
SponsorListSerializer,
1515
SponsorRemainingAccountSerializer,
1616
SponsorSerializer,
17+
SponsorLevelSerializer,
1718
)
1819
from sponsor.slack import send_new_sponsor_notification
1920
from sponsor.validators import SponsorValidater
2021

2122

23+
class SponsorLevelViewSet(ModelViewSet):
24+
lookup_field = "id"
25+
serializer_class = SponsorLevelSerializer
26+
http_method_names = ["get", "post", "put", "delete"]
27+
28+
def get_queryset(self):
29+
return SponsorLevel.objects.get_queryset()
30+
31+
def list(self, request, *args, **kwagrs):
32+
queryset = self.get_queryset()
33+
serializer = self.get_serializer(queryset, many=True)
34+
return Response(serializer.data)
35+
36+
def create(self, request, *args, **kwagrs):
37+
serializer = self.get_serializer(data=request.data)
38+
serializer.is_valid(raise_exception=True)
39+
serializer.save()
40+
41+
return Response(serializer.data, status=status.HTTP_201_CREATED)
42+
43+
def retrieve(self, request, id, *args, **kwargs):
44+
sponsor_level = self.get_object()
45+
serializer = self.get_serializer(sponsor_level)
46+
return Response(serializer.data)
47+
48+
# def update(self, request, id, *args, **kwargs):
49+
# sponsor_level = self.get_object()
50+
# serializer = self.get_serializer(sponsor_level, data=request.data, partial=True)
51+
# serializer.is_valid(raise_exception=True)
52+
# serializer.save()
53+
# return Response(serializer.data)
54+
55+
# def delete(self, request, id, *args, **kwagrs):
56+
# sponsor_level = self.get_object()
57+
# sponsor_level.delete()
58+
# return Response(status=status.HTTP_204_NO_CONTENT)
59+
60+
2261
class SponsorViewSet(ModelViewSet):
2362
serializer_class = SponsorSerializer
2463
permission_classes = [IsOwnerOrReadOnly] # 본인 소유만 수정 가능

0 commit comments

Comments
 (0)