Skip to content

Commit 60d1038

Browse files
committed
Feature: Add sponser viewset
1 parent c931ed4 commit 60d1038

File tree

4 files changed

+73
-1
lines changed

4 files changed

+73
-1
lines changed

pyconkr/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
from django.contrib import admin
1717
from django.urls import include, path
1818

19+
import sponsor.routers
20+
1921
urlpatterns = [
2022
path("api-auth/", include("rest_framework.urls")),
2123
path("summernote/", include("django_summernote.urls")),
2224
path("admin/", admin.site.urls),
23-
path("sponsors/", include("sponsor.urls")),
25+
path("sponsors/", include(sponsor.routers.get_router().urls)),
2426
]

sponsor/routers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from rest_framework.routers import DefaultRouter
2+
3+
from sponsor.viewsets import *
4+
5+
6+
def get_router():
7+
router = DefaultRouter()
8+
router.register("", SponsorViewSet, basename="sponsor")
9+
10+
return router

sponsor/serializers.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from rest_framework.serializers import ModelSerializer
2+
3+
from sponsor.models import Sponsor
4+
5+
6+
class SponsorSerializer(ModelSerializer):
7+
class Meta:
8+
model = Sponsor
9+
fields = "__all__"
10+
11+
12+
class SponsorListSerializer(ModelSerializer):
13+
class Meta:
14+
model = Sponsor
15+
fields = [
16+
"name",
17+
"level",
18+
"desc",
19+
"eng_desc",
20+
"url",
21+
"logo_image",
22+
"id",
23+
]

sponsor/viewsets.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from django.shortcuts import get_object_or_404
2+
3+
from rest_framework.viewsets import ReadOnlyModelViewSet
4+
from rest_framework.permissions import IsAuthenticatedOrReadOnly
5+
from rest_framework.response import Response
6+
7+
from sponsor.serializers import (
8+
SponsorSerializer,
9+
SponsorListSerializer,
10+
)
11+
from sponsor.models import Sponsor
12+
13+
14+
class SponsorViewSet(ReadOnlyModelViewSet):
15+
serializer_class = SponsorSerializer
16+
permission_classes = [IsAuthenticatedOrReadOnly] # 로그인된 사용자에게만 허용
17+
18+
def get_queryset(self):
19+
return Sponsor.objects.all()
20+
21+
def list(self, request, *args, **kwargs):
22+
queryset = Sponsor.objects.filter(accepted=True).order_by("name")
23+
serializer = SponsorListSerializer(queryset, many=True)
24+
return Response(serializer.data)
25+
26+
def create(self, request, *args, **kwargs):
27+
serializer = self.get_serializer(data=request.data)
28+
serializer.is_valid(raise_exception=True)
29+
serializer.save()
30+
return Response(serializer.data)
31+
32+
def retrieve(self, request, *args, **kwargs):
33+
pk = kwargs["pk"]
34+
sponsor_data = get_object_or_404(Sponsor, pk=pk)
35+
36+
serializer = SponsorSerializer(sponsor_data)
37+
return Response(serializer.data)

0 commit comments

Comments
 (0)