Skip to content
Snippets Groups Projects
Commit af46a31c authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Limit selected fields in build_timetable

parent 59886687
No related branches found
No related tags found
1 merge request!150Resolve "Django 3.2 database improvements"
......@@ -48,6 +48,25 @@ def build_timetable(
# Get matching lesson periods
lesson_periods = LessonPeriod.objects
lesson_periods = (
lesson_periods.select_related(None)
.select_related("lesson", "lesson__subject", "period", "room")
.only(
"lesson",
"period",
"room",
"lesson__subject",
"period__weekday",
"period__period",
"lesson__subject__short_name",
"lesson__subject__name",
"lesson__subject__colour_fg",
"lesson__subject__colour_bg",
"room__short_name",
"room__name",
)
)
if is_week:
lesson_periods = lesson_periods.in_week(date_ref)
else:
......@@ -72,6 +91,23 @@ def build_timetable(
else:
extra_lessons = extra_lessons.filter_from_type(type_, obj)
extra_lessons = extra_lessons.only(
"week",
"year",
"period",
"subject",
"room",
"comment",
"period__weekday",
"period__period",
"subject__short_name",
"subject__name",
"subject__colour_fg",
"subject__colour_bg",
"room__short_name",
"room__name",
)
# Sort lesson periods in a dict
extra_lessons_per_period = extra_lessons.group_by_periods(is_week=is_week)
......@@ -87,6 +123,18 @@ def build_timetable(
else:
events = events.filter_from_type(type_, obj)
events = events.only(
"id",
"title",
"date_start",
"date_end",
"period_from",
"period_to",
"period_from__weekday",
"period_from__period",
"period_to__weekday",
"period_to__period",
)
# Sort events in a dict
events_per_period = {}
for event in events:
......@@ -144,7 +192,29 @@ def build_timetable(
else:
week = date_ref
supervisions = (
Supervision.objects.in_week(week).all().annotate_week(week).filter_by_teacher(obj)
Supervision.objects.in_week(week)
.all()
.annotate_week(week)
.filter_by_teacher(obj)
.only(
"area",
"break_item",
"teacher",
"area",
"area__short_name",
"area__name",
"area__colour_fg",
"area__colour_bg",
"break_item__short_name",
"break_item__name",
"break_item__after_period__period",
"break_item__after_period__weekday",
"break_item__before_period__period",
"break_item__before_period__weekday",
"teacher__short_name",
"teacher__first_name",
"teacher__last_name",
)
)
if not is_week:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment