diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py index 9ef800d857e22d0003ccb092ef44e662dee092c0..f68610159806d6d5e4eec0476cbf430f96460fcb 100644 --- a/biscuit/apps/chronos/models.py +++ b/biscuit/apps/chronos/models.py @@ -1,5 +1,7 @@ +from __future__ import annotations + from datetime import date, datetime, timedelta -from typing import Dict, Optional, Tuple +from typing import Dict, Optional, Tuple, Union from django.core import validators from django.core.exceptions import ValidationError @@ -9,6 +11,7 @@ from django.http.request import QueryDict from django.utils.translation import ugettext_lazy as _ from biscuit.core.mixins import SchoolRelated +from biscuit.core.models import Group, Person from .util import CalendarWeek, week_weekday_from_date @@ -47,17 +50,17 @@ class LessonPeriodQuerySet(models.QuerySet): select={'_week': week.week} ) - def filter_group(self, group: int): + def filter_group(self, group: Union[Group, int]): return self.filter( - Q(lesson__groups__pk=group) | Q(lesson__groups__parent_groups__pk=group)) + Q(lesson__groups=group) | Q(lesson__groups__parent_groups=group)) - def filter_teacher(self, teacher: int): + def filter_teacher(self, teacher: Union[Person, int]): return self.filter( - Q(substitutions__teachers__pk=teacher, substitutions__week=models.F('_week')) | Q(lesson__teachers__pk=teacher)) + Q(substitutions__teachers=teacher, substitutions__week=models.F('_week')) | Q(lesson__teachers=teacher)) - def filter_room(self, room: int): + def filter_room(self, room: Union[Room, int]): return self.filter( - Q(substitutions__room__pk=room, substitutions__week=models.F('_week')) | Q(room__pk=room)) + Q(substitutions__room=room, substitutions__week=models.F('_week')) | Q(room=room)) def filter_from_query(self, query_data: QueryDict): if query_data.get('group', None):