Skip to content
Snippets Groups Projects
chronos_helpers.py 1.07 KiB
Newer Older
Hangzhi Yu's avatar
Hangzhi Yu committed
from typing import Optional

from django.http import HttpRequest, HttpResponseNotFound
from django.shortcuts import get_object_or_404

Tom Teichler's avatar
Tom Teichler committed
from aleksis.core.models import Group, Person

Hangzhi Yu's avatar
Hangzhi Yu committed
from ..managers import TimetableType
from ..models import LessonPeriod, LessonSubstitution, Room


def get_el_by_pk(
    request: HttpRequest,
    type_: str,
    pk: int,
    year: Optional[int] = None,
    week: Optional[int] = None,
    regular: Optional[str] = None,
):
    if type_ == TimetableType.GROUP.value:
        return get_object_or_404(Group, pk=pk)
    elif type_ == TimetableType.TEACHER.value:
        return get_object_or_404(Person, pk=pk)
    elif type_ == TimetableType.ROOM.value:
        return get_object_or_404(Room, pk=pk)
    else:
        return HttpResponseNotFound()


def get_substitution_by_id(request: HttpRequest, id_: int, week: int):
    lesson_period = get_object_or_404(LessonPeriod, pk=id_)
    wanted_week = lesson_period.lesson.get_calendar_week(week)

    return LessonSubstitution.objects.filter(
        week=wanted_week.week, lesson_period=lesson_period
    ).first()