diff --git a/biscuit/apps/chronos/forms.py b/biscuit/apps/chronos/forms.py index 08a1c5c21341380e9efdf9f7938bb51f91c71125..3af258cad1ede16001cfc9b94497648bc0ee854e 100644 --- a/biscuit/apps/chronos/forms.py +++ b/biscuit/apps/chronos/forms.py @@ -13,7 +13,7 @@ class SelectForm(forms.Form): label=_('Group'), required=False) teacher = forms.ModelChoiceField( queryset=Person.objects.annotate(lessons_count=Count( - 'lessons')).filter(lessons_count__gt=0), + 'lessons_as_teacher')).filter(lessons_count__gt=0), label=_('Teacher'), required=False) room = forms.ModelChoiceField( queryset=Room.objects.annotate(lessons_count=Count( diff --git a/biscuit/apps/chronos/model_extensions.py b/biscuit/apps/chronos/model_extensions.py index 35afb5c3ee89649d941f8a7a8fa96ac7b2c8ba66..b4a6d4adab7ae78f62e8cbca2d0e7ee5a2da13bf 100644 --- a/biscuit/apps/chronos/model_extensions.py +++ b/biscuit/apps/chronos/model_extensions.py @@ -1,8 +1,18 @@ from biscuit.core.models import Person -from .models import Lesson +from .models import Lesson, LessonPeriod @Person.property def lessons_as_participant(self): - return Lesson.objects.filter(groups__member=self) + return Lesson.objects.filter(groups__members=self) + + +@Person.property +def lesson_periods_as_participant(self): + return LessonPeriod.objects.filter(lesson__groups__members=self) + + +@Person.property +def lesson_periods_as_teacher(self): + return LessonPeriod.objects.filter(lesson__teachers=self) diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py index 2e4e512c53949f1ff7221dfbdca61b0c17826079..675c492c1a1c0cf03795c030e7791e37b2bbc72d 100644 --- a/biscuit/apps/chronos/models.py +++ b/biscuit/apps/chronos/models.py @@ -10,7 +10,7 @@ from django.db.models import Q from django.http.request import QueryDict from django.utils.translation import ugettext_lazy as _ -from biscuit.core.mixins import SchoolRelated +from biscuit.core.mixins import ExtensibleModel, SchoolRelated from biscuit.core.models import Group, Person from .util import CalendarWeek, week_weekday_from_date @@ -274,7 +274,7 @@ class LessonSubstitution(SchoolRelated): ] -class LessonPeriod(SchoolRelated): +class LessonPeriod(SchoolRelated, ExtensibleModel): objects = LessonPeriodManager.from_queryset(LessonPeriodQuerySet)() lesson = models.ForeignKey('Lesson', models.CASCADE, related_name='lesson_periods')