88import requests
99from django .conf import settings
1010
11- from .serializers import PretalxPaginatedSessionSerializer
11+ from .serializers import PretalxPaginatedSessionSerializer , PretalxSessionSerializer
1212
1313logger = logging .getLogger (__name__ )
1414
@@ -39,7 +39,7 @@ def _request(self, method: RequestMethodType, endpoint: str, *args: tuple, **kwa
3939 logger .error (traceback .format_exception (e ))
4040 raise PretalxException ("Pretalx API 요청에 실패했습니다." ) from e
4141
42- def retrieve_sessions (self , event_name : str , only_confirmed : bool = True ) -> dict :
42+ def list_sessions (self , event_name : str , only_confirmed : bool = True ) -> dict :
4343 """세션 목록 조회"""
4444 endpoint = f"api/events/{ event_name } /submissions" + ("?state=confirmed" if only_confirmed else "" )
4545
@@ -53,5 +53,19 @@ def retrieve_sessions(self, event_name: str, only_confirmed: bool = True) -> dic
5353 except Exception as e :
5454 raise PretalxException ("세션 목록을 가져오지 못했습니다, 잠시 후에 다시 시도해주세요." ) from e
5555
56+ def retrieve_session (self , event_name : str , session_id : int ) -> dict :
57+ """세션 상세 조회"""
58+ endpoint = f"api/events/{ event_name } /submissions/{ session_id } "
59+
60+ try :
61+ result = self ._request ("GET" , endpoint )
62+ result .raise_for_status ()
63+
64+ parsed_result = PretalxSessionSerializer (data = result .json ())
65+ parsed_result .is_valid (raise_exception = True )
66+ return parsed_result .validated_data
67+ except Exception as e :
68+ raise PretalxException ("세션을 가져오지 못했습니다, 잠시 후에 다시 시도해주세요." ) from e
69+
5670
5771pretalx_client = PretalxClient ()
0 commit comments