Skip to content

Commit d25907b

Browse files
authored
Opt get timetable (#110)
* Optimize get_timetable * linting
1 parent 93d9be2 commit d25907b

1 file changed

Lines changed: 4 additions & 7 deletions

File tree

calendar_backend/routes/event/event.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
from calendar_backend.exceptions import NotEnoughCriteria
1212
from calendar_backend.methods import list_calendar
13-
from calendar_backend.models import Event, EventsGroups, EventsLecturers, EventsRooms, Group, Lecturer, Room
13+
from calendar_backend.models import Event, Group, Lecturer, Room
1414
from calendar_backend.routes.models import EventGet
1515
from calendar_backend.routes.models.event import EventPatch, EventPost, GetListEvent
1616
from calendar_backend.settings import get_settings
@@ -34,14 +34,11 @@ async def _get_timetable(start: date, end: date, group_id, lecturer_id, room_id,
3434
Event.end_ts < end,
3535
)
3636
if group_id:
37-
ids_ = EventsGroups.get_all(session=db.session).filter(EventsGroups.group_id == group_id).all()
38-
events = events.filter(Event.id.in_(row.event_id for row in ids_))
37+
events = events.filter(Event.group.any(Group.id == group_id))
3938
elif lecturer_id:
40-
ids_ = EventsLecturers.get_all(session=db.session).filter(EventsLecturers.lecturer_id == lecturer_id).all()
41-
events = events.filter(Event.id.in_(row.event_id for row in ids_))
39+
events = events.filter(Event.lecturer.any(Lecturer.id == lecturer_id))
4240
elif room_id:
43-
ids_ = EventsRooms.get_all(session=db.session).filter(EventsRooms.room_id == room_id).all()
44-
events = events.filter(Event.id.in_(row.event_id for row in ids_))
41+
events = events.filter(Event.room.any(Room.id == room_id))
4542
cnt = events.count()
4643
if limit:
4744
events = events.order_by(Event.start_ts).limit(limit).offset(offset).all()

0 commit comments

Comments
 (0)