Skip to content

Commit e71c118

Browse files
committed
chore: 일반 API 정리
1 parent f2e1bf1 commit e71c118

5 files changed

Lines changed: 18 additions & 6 deletions

File tree

app/core/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
v1_apis: list[resolvers.URLPattern | resolvers.URLResolver] = [
2727
path("cms/", include("cms.urls")),
2828
path("admin-api/", include("admin_api.urls")),
29-
path("event/presentations/", include("event.presentation.urls")),
29+
path("event/presentation/", include("event.presentation.urls")),
30+
path("event/sponsor/", include("event.sponsor.urls")),
3031
]
3132

3233
urlpatterns = [

app/event/presentation/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from rest_framework import routers
2121

2222
cms_router = routers.SimpleRouter()
23-
cms_router.register("presentation", views.PresentationViewSet, basename="presentation")
23+
cms_router.register("", views.PresentationViewSet, basename="presentation")
24+
cms_router.register("category", views.PresentationCategoryViewSet, basename="presentation-category")
2425

2526
urlpatterns = [path("", include(cms_router.urls))]

app/event/presentation/views.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
from core.const.regex import UUID_V4
1+
from core.const.regex import UUID_V4_REGEX
2+
from core.const.tag import OpenAPITag
23
from django.db.models import QuerySet
4+
from django.utils.decorators import method_decorator
35
from django_filters import rest_framework as filters
46
from django_filters.constants import EMPTY_VALUES
7+
from drf_spectacular.utils import extend_schema
58
from event.presentation.models import Presentation, PresentationCategory, PresentationCategoryRelation
69
from event.presentation.serializers import PresentationSerializer
710
from rest_framework import mixins, serializers, viewsets
@@ -14,18 +17,21 @@ class PresentationFilterSet(filters.FilterSet):
1417
def filter_by_category_ids(self, queryset: QuerySet, name: str, value: list[str]) -> QuerySet:
1518
if not value or value in EMPTY_VALUES:
1619
return queryset
17-
if not any(UUID_V4.match(v) for v in value):
20+
if not any(UUID_V4_REGEX.match(v) for v in value):
1821
return serializers.ValidationError(f"Invalid UUID format in {name} filter: {value}.")
1922

2023
target_ids = PresentationCategoryRelation.objects.filter(category__id__in=value).values_list("presentation_id")
2124
return queryset.filter(id__in=target_ids)
2225

2326

27+
@method_decorator(name="list", decorator=extend_schema(tags=[OpenAPITag.EVENT_PRESENTATION]))
2428
class PresentationCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
2529
queryset = PresentationCategory.objects.filter_active()
2630

2731

28-
class PresentationViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
32+
@method_decorator(name="list", decorator=extend_schema(tags=[OpenAPITag.EVENT_PRESENTATION]))
33+
@method_decorator(name="retrieve", decorator=extend_schema(tags=[OpenAPITag.EVENT_PRESENTATION]))
34+
class PresentationViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
2935
queryset = Presentation.objects.get_all_nested_data()
3036
serializer_class = PresentationSerializer
3137
filterset_class = PresentationFilterSet

app/event/sponsor/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
from rest_framework import routers
44

55
cms_router = routers.SimpleRouter()
6-
cms_router.register("sponsors", views.SponsorTierViewSet, basename="sponsor")
6+
cms_router.register("", views.SponsorTierViewSet, basename="sponsor")
77

88
urlpatterns = [path("", include(cms_router.urls))]

app/event/sponsor/views.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
from core.const.tag import OpenAPITag
12
from django.db import models
3+
from django.utils.decorators import method_decorator
4+
from drf_spectacular.utils import extend_schema
25
from event.sponsor.models import Sponsor, SponsorTier
36
from event.sponsor.serializers import SponsorTierSerializer
47
from rest_framework import mixins, viewsets
58

69

10+
@method_decorator(name="list", decorator=extend_schema(tags=[OpenAPITag.EVENT_SPONSOR]))
711
class SponsorTierViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
812
queryset = SponsorTier.objects.filter_active().prefetch_related(
913
models.Prefetch(

0 commit comments

Comments
 (0)