1
1
from django .conf import settings
2
+ from django .utils .decorators import method_decorator
3
+ from django .views .decorators .cache import cache_page
2
4
from drf_spectacular .utils import OpenApiExample , OpenApiResponse , extend_schema
3
5
from rest_framework .permissions import IsAuthenticatedOrReadOnly
4
6
from rest_framework .response import Response
@@ -28,14 +30,24 @@ def get_queryset(self):
28
30
200 : OpenApiResponse (
29
31
response = str ,
30
32
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
+ ),
33
40
],
34
41
),
35
42
},
36
43
)
44
+ # cache list about 30 minutes
45
+ @method_decorator (cache_page (60 * 30 ))
37
46
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
+ ):
39
51
return super ().list (request , * args , ** kwargs )
40
52
41
53
pretalx_event_name = settings .PRETALX .EVENT_NAME [request .version ]
@@ -52,13 +64,21 @@ def list(self, request, *args, **kwargs) -> Response:
52
64
response = str ,
53
65
examples = [
54
66
OpenApiExample (name = "2023년 세션 상세" , value = SessionSerializer ()),
55
- OpenApiExample (name = "2024년 이후 세션 상세 (Pretalx)" , value = PretalxSessionSerializer ()),
67
+ OpenApiExample (
68
+ name = "2024년 이후 세션 상세 (Pretalx)" ,
69
+ value = PretalxSessionSerializer (),
70
+ ),
56
71
],
57
72
),
58
73
},
59
74
)
75
+ # cache each about 30 minutes
76
+ @method_decorator (cache_page (60 * 30 ))
60
77
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
+ ):
62
82
return super ().retrieve (request , * args , ** kwargs )
63
83
64
84
pretalx_event_name = settings .PRETALX .EVENT_NAME [request .version ]
0 commit comments