11from django .conf import settings
2+ from django .utils .decorators import method_decorator
3+ from django .views .decorators .cache import cache_page
24from drf_spectacular .utils import OpenApiExample , OpenApiResponse , extend_schema
35from rest_framework .permissions import IsAuthenticatedOrReadOnly
46from rest_framework .response import Response
@@ -28,14 +30,24 @@ def get_queryset(self):
2830 200 : OpenApiResponse (
2931 response = str ,
3032 examples = [
31- OpenApiExample (name = "2023년 세션 목록" , value = SessionListSerializer (many = True )),
32- OpenApiExample (name = "2024년 이후 세션 목록 (Pretalx)" , value = PretalxSessionSerializer (many = True )),
33+ OpenApiExample (
34+ name = "2023년 세션 목록" , value = SessionListSerializer (many = True )
35+ ),
36+ OpenApiExample (
37+ name = "2024년 이후 세션 목록 (Pretalx)" ,
38+ value = PretalxSessionSerializer (many = True ),
39+ ),
3340 ],
3441 ),
3542 },
3643 )
44+ # cache list about 30 minutes
45+ @method_decorator (cache_page (60 * 30 ))
3746 def list (self , request , * args , ** kwargs ) -> Response :
38- if request .version == 2023 or request .version not in settings .PRETALX .EVENT_NAME :
47+ if (
48+ request .version == 2023
49+ or request .version not in settings .PRETALX .EVENT_NAME
50+ ):
3951 return super ().list (request , * args , ** kwargs )
4052
4153 pretalx_event_name = settings .PRETALX .EVENT_NAME [request .version ]
@@ -52,13 +64,21 @@ def list(self, request, *args, **kwargs) -> Response:
5264 response = str ,
5365 examples = [
5466 OpenApiExample (name = "2023년 세션 상세" , value = SessionSerializer ()),
55- OpenApiExample (name = "2024년 이후 세션 상세 (Pretalx)" , value = PretalxSessionSerializer ()),
67+ OpenApiExample (
68+ name = "2024년 이후 세션 상세 (Pretalx)" ,
69+ value = PretalxSessionSerializer (),
70+ ),
5671 ],
5772 ),
5873 },
5974 )
75+ # cache each about 30 minutes
76+ @method_decorator (cache_page (60 * 30 ))
6077 def retrieve (self , request , * args , ** kwargs ) -> Response :
61- if request .version == 2023 or request .version not in settings .PRETALX .EVENT_NAME :
78+ if (
79+ request .version == 2023
80+ or request .version not in settings .PRETALX .EVENT_NAME
81+ ):
6282 return super ().retrieve (request , * args , ** kwargs )
6383
6484 pretalx_event_name = settings .PRETALX .EVENT_NAME [request .version ]
0 commit comments