66from fastapi import APIRouter , Depends , Query
77from fastapi .responses import FileResponse
88from fastapi_sqlalchemy import db
9- from pydantic import parse_obj_as
9+ from pydantic import TypeAdapter
1010
1111from calendar_backend .exceptions import NotEnoughCriteria
1212from calendar_backend .methods import list_calendar
2323
2424@router .get ("/{id}" , response_model = EventGet )
2525async def get_event_by_id (id : int ) -> EventGet :
26- return EventGet .from_orm (Event .get (id , session = db .session ))
26+ return EventGet .model_validate (Event .get (id , session = db .session ))
2727
2828
2929async def _get_timetable (start : date , end : date , group_id , lecturer_id , room_id , detail , limit , offset ):
@@ -60,7 +60,7 @@ async def _get_timetable(start: date, end: date, group_id, lecturer_id, room_id,
6060 }
6161 ]
6262
63- return GetListEvent (items = events , limit = limit , offset = offset , total = cnt ).dict (exclude = fmt )
63+ return GetListEvent (items = events , limit = limit , offset = offset , total = cnt ).model_dump (exclude = fmt )
6464
6565
6666@router .get ("/" , response_model = GetListEvent | None )
@@ -86,7 +86,7 @@ async def get_events(
8686
8787@router .post ("/" , response_model = EventGet )
8888async def create_event (event : EventPost , _ = Depends (UnionAuth (scopes = ["timetable.event.create" ]))) -> EventGet :
89- event_dict = event .dict ()
89+ event_dict = event .model_dump ()
9090 rooms = [Room .get (room_id , session = db .session ) for room_id in event_dict .pop ("room_id" , [])]
9191 lecturers = [Lecturer .get (lecturer_id , session = db .session ) for lecturer_id in event_dict .pop ("lecturer_id" , [])]
9292 groups = [Group .get (group_id , session = db .session ) for group_id in event_dict .pop ("group_id" , [])]
@@ -98,7 +98,7 @@ async def create_event(event: EventPost, _=Depends(UnionAuth(scopes=["timetable.
9898 session = db .session ,
9999 )
100100 db .session .commit ()
101- return EventGet .from_orm (event_get )
101+ return EventGet .model_validate (event_get )
102102
103103
104104@router .post ("/bulk" , response_model = list [EventGet ])
@@ -107,7 +107,7 @@ async def create_events(
107107) -> list [EventGet ]:
108108 result = []
109109 for event in events :
110- event_dict = event .dict ()
110+ event_dict = event .model_dump ()
111111 rooms = [Room .get (room_id , session = db .session ) for room_id in event_dict .pop ("room_id" , [])]
112112 lecturers = [Lecturer .get (lecturer_id , session = db .session ) for lecturer_id in event_dict .pop ("lecturer_id" , [])]
113113 groups = [Group .get (group_id , session = db .session ) for group_id in event_dict .pop ("group_id" , [])]
@@ -121,16 +121,17 @@ async def create_events(
121121 )
122122 )
123123 db .session .commit ()
124- return parse_obj_as (list [EventGet ], result )
124+ adapter = TypeAdapter (list [EventGet ])
125+ return adapter .validate_python (result )
125126
126127
127128@router .patch ("/{id}" , response_model = EventGet )
128129async def patch_event (
129130 id : int , event_inp : EventPatch , _ = Depends (UnionAuth (scopes = ["timetable.event.update" ]))
130131) -> EventGet :
131- patched = Event .update (id , session = db .session , ** event_inp .dict (exclude_unset = True ))
132+ patched = Event .update (id , session = db .session , ** event_inp .model_dump (exclude_unset = True ))
132133 db .session .commit ()
133- return EventGet .from_orm (patched )
134+ return EventGet .model_validate (patched )
134135
135136
136137@router .delete ("/bulk" , response_model = None )
0 commit comments