Skip to content

Commit 356b6bf

Browse files
костыль на время работы get_group_by_id(#48)
1 parent 0ac6982 commit 356b6bf

5 files changed

Lines changed: 28 additions & 26 deletions

File tree

calendar_backend/methods/list_calendar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ async def get_user_calendar(group_id: int, session: Session, start_date: date_,
2525
logger.debug(f"Getting user calendar (iCal) for group {group_id}")
2626
group = Group.get(group_id, session=session)
2727
user_calendar = Calendar()
28-
timetable = await utils.get_group_lessons_in_daterange(group, start_date, end_date, session=session)
28+
timetable = await utils.get_group_lessons_in_daterange(group, start_date, end_date)
2929
for lesson in timetable:
3030
teacher = (
3131
str([f"{row.first_name} {row.middle_name} {row.last_name}" for row in lesson.lecturer])

calendar_backend/methods/utils.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,30 @@ async def get_lessons_by_group_from_date(group: Group, date: datetime.date) -> l
3535

3636

3737
async def get_group_lessons_in_daterange(
38-
group: Group, date_start: datetime.date, date_end: datetime.date, session: Session
38+
group: Group, date_start: datetime.date, date_end: datetime.date
3939
) -> list[Event]:
4040
events_list = []
41-
events = Event.get_all(session=session).filter(Event.group_id == group.id).all()
42-
for lesson in events:
41+
for lesson in group.events:
4342
if lesson.start_ts.date() >= date_start and lesson.end_ts.date() < date_end:
4443
events_list.append(lesson)
4544
return events_list
4645

4746

4847
async def get_room_lessons_in_daterange(
49-
room: Room, date_start: datetime.date, date_end: datetime.date, session: Session
48+
room: Room, date_start: datetime.date, date_end: datetime.date
5049
) -> list[Event]:
5150
events_list = []
52-
events_ids = EventsRooms.get_all(session=session).filter(EventsRooms.room_id == room.id).all()
53-
events = [Event.get(row, session=session) for row in events_ids]
54-
for lesson in events:
51+
for lesson in room.events:
5552
if lesson.start_ts.date() >= date_start and lesson.end_ts.date() < date_end:
5653
events_list.append(lesson)
5754
return events_list
5855

5956

6057
async def get_lecturer_lessons_in_daterange(
61-
lecturer: Lecturer, date_start: datetime.date, date_end: datetime.date, session: Session
58+
lecturer: Lecturer, date_start: datetime.date, date_end: datetime.date
6259
) -> list[Event]:
6360
events_list = []
64-
events_ids = EventsLecturers.get_all(session=session).filter(EventsRooms.room_id == lecturer.id).all()
65-
events = [Event.get(row, session=session) for row in events_ids]
66-
for lesson in events:
61+
for lesson in lecturer.events:
6762
if lesson.start_ts.date() >= date_start and lesson.end_ts.date() < date_end:
6863
events_list.append(lesson)
6964
return events_list

calendar_backend/routes/group.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from calendar_backend.settings import get_settings
99
from calendar_backend.methods import utils, auth
1010
from calendar_backend.routes.models import GroupEvents, GroupGet, GroupPost, GroupPatch, GetListGroup
11-
from calendar_backend.models import Group
11+
from calendar_backend.models import Group, Event
1212

1313
group_router = APIRouter(prefix="/timetable/group", tags=["Group"])
1414
settings = get_settings()
@@ -20,11 +20,12 @@ async def http_get_group_by_id(
2020
id: int, start: datetime.date | None = None, end: datetime.date | None = None
2121
) -> GroupEvents:
2222
group = Group.get(id, session=db.session)
23-
result = GroupEvents.from_orm(group)
2423
if start and end:
25-
result.events = await utils.get_group_lessons_in_daterange(group, start, end, db.session)
26-
return GroupEvents.from_orm(result)
27-
return GroupGet.from_orm(result)
24+
result = GroupGet.from_orm(group).dict()
25+
result["events"] = Event.get_all(session=db.session).filter(Event.start_ts >= start, Event.end_ts < end, Event.group_id == id).all()
26+
else:
27+
result = GroupGet.from_orm(group)
28+
return result
2829

2930

3031
@group_router.get("/", response_model=GetListGroup)

calendar_backend/routes/lecturer.py

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

88
from calendar_backend.exceptions import ObjectNotFound
99
from calendar_backend.methods import utils, auth
10+
from calendar_backend.methods.utils import get_lecturer_lessons_in_daterange
1011
from calendar_backend.models.db import CommentLecturer as DbCommentLecturer
1112
from calendar_backend.models.db import Lecturer
1213
from calendar_backend.models.db import Photo as DbPhoto
@@ -36,11 +37,13 @@ async def http_get_lecturer_by_id(
3637
) -> LecturerEvents | LecturerGet:
3738
lecturer = Lecturer.get(id, session=db.session)
3839
lecturer.avatar_link = lecturer.avatar.link if lecturer.avatar else None
39-
result = LecturerEvents.from_orm(lecturer)
4040
if start and end:
41-
result.events = await utils.get_lecturer_lessons_in_daterange(lecturer, start, end, db.session)
42-
return LecturerEvents.from_orm(result)
43-
return LecturerGet.from_orm(result)
41+
result = LecturerGet.from_orm(lecturer).dict()
42+
events = await get_lecturer_lessons_in_daterange(lecturer, start, end)
43+
result["events"] = events
44+
else:
45+
result = LecturerGet.from_orm(lecturer)
46+
return result
4447

4548

4649
@lecturer_router.get("/", response_model=GetListLecturer)

calendar_backend/routes/room.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
from fastapi import APIRouter, HTTPException, Depends
66
from fastapi_sqlalchemy import db
77

8+
from calendar_backend.methods.utils import get_room_lessons_in_daterange
89
from calendar_backend.settings import get_settings
910
from calendar_backend.methods import utils, auth
1011
from calendar_backend.routes.models import RoomEvents, GetListRoom, RoomPost, RoomPatch, RoomGet
11-
from calendar_backend.models import Room
12+
from calendar_backend.models import Room, EventsRooms, Event
1213

1314
room_router = APIRouter(prefix="/timetable/room", tags=["Room"])
1415
settings = get_settings()
@@ -20,11 +21,13 @@ async def http_get_room_by_id(
2021
id: int, start: datetime.date | None = None, end: datetime.date | None = None
2122
) -> RoomEvents | RoomGet:
2223
room = Room.get(id, session=db.session)
23-
result = RoomEvents.from_orm(room)
2424
if start and end:
25-
result.events = await utils.get_room_lessons_in_daterange(room, start, end, db.session)
26-
return RoomEvents.from_orm(result)
27-
return RoomGet.from_orm(result)
25+
result = RoomGet.from_orm(room).dict()
26+
events = await get_room_lessons_in_daterange(room, start, end)
27+
result["events"] = events
28+
else:
29+
result = RoomGet.from_orm(room)
30+
return result
2831

2932

3033
@room_router.get("/", response_model=GetListRoom)

0 commit comments

Comments
 (0)