Skip to content
Snippets Groups Projects
Commit a852cd29 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch '195-migrations-fail-with-programmingerror' into 'master'

Resolve "Migrations fail with ProgrammingError"

Closes #195

See merge request !285
parents f82d4be0 91270dc7
No related branches found
No related tags found
1 merge request!285Resolve "Migrations fail with ProgrammingError"
Pipeline #103046 failed
Pipeline: AlekSIS

#103052

    ......@@ -17,6 +17,7 @@ Changed
    Fixed
    ~~~~~
    * Migrations wouldn't run on new installations due to a faulty reference to SchoolTerm.
    * The daily lessons page did not work correctly due to faulty pre-filtering of lessons.
    * Substitution form teacher selections also included students
    * Getting the max and min periods for events failed due to using always the current school term.
    ......
    ......@@ -68,16 +68,7 @@ class LessonPeriodFilter(FilterSet):
    )
    lesson__teachers = MultipleModelMultipleChoiceFilter(
    ["lesson__teachers", "current_substitution__teachers"],
    queryset=Person.objects.annotate(
    lessons_count=Count(
    "lessons_as_teacher",
    filter=Q(lessons_as_teacher__validity__school_term=SchoolTerm.current)
    if SchoolTerm.current
    else Q(),
    )
    )
    .filter(lessons_count__gt=0)
    .order_by("short_name", "last_name"),
    queryset=Person.objects.none(),
    label=_("Teachers"),
    widget=ModelSelect2MultipleWidget(
    attrs={"data-minimum-input-length": 0, "class": "browser-default"},
    ......@@ -118,6 +109,18 @@ class LessonPeriodFilter(FilterSet):
    weekday = kwargs.pop("weekday")
    super().__init__(*args, **kwargs)
    self.filters["period"].queryset = TimePeriod.objects.filter(weekday=weekday)
    self.filters["lesson__teachers"].queryset = (
    Person.objects.annotate(
    lessons_count=Count(
    "lessons_as_teacher",
    filter=Q(lessons_as_teacher__validity__school_term=SchoolTerm.current)
    if SchoolTerm.current
    else Q(),
    )
    )
    .filter(lessons_count__gt=0)
    .order_by("short_name", "last_name")
    )
    self.form.layout = Layout(
    Row("period", "lesson__groups", "room"),
    Row("lesson__teachers", "lesson__subject", "substituted"),
    ......@@ -129,16 +132,7 @@ class SupervisionFilter(FilterSet):
    area = ModelMultipleChoiceFilter(queryset=SupervisionArea.objects.all())
    teacher = MultipleModelMultipleChoiceFilter(
    ["teacher", "current_substitution__teacher"],
    queryset=Person.objects.annotate(
    lessons_count=Count(
    "lessons_as_teacher",
    filter=Q(lessons_as_teacher__validity__school_term=SchoolTerm.current)
    if SchoolTerm.current
    else Q(),
    )
    )
    .filter(lessons_count__gt=0)
    .order_by("short_name", "last_name"),
    queryset=Person.objects.none(),
    label=_("Teacher"),
    widget=ModelSelect2MultipleWidget(
    attrs={"data-minimum-input-length": 0, "class": "browser-default"},
    ......@@ -166,6 +160,18 @@ class SupervisionFilter(FilterSet):
    def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.filters["break_item"].queryset = Break.objects.filter(supervisions__in=self.queryset)
    self.filters["lesson__teachers"].queryset = (
    Person.objects.annotate(
    lessons_count=Count(
    "lessons_as_teacher",
    filter=Q(lessons_as_teacher__validity__school_term=SchoolTerm.current)
    if SchoolTerm.current
    else Q(),
    )
    )
    .filter(lessons_count__gt=0)
    .order_by("short_name", "last_name")
    )
    self.form.layout = Layout(
    Row("break_item", "area"),
    Row("teacher", "substituted"),
    ......
    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