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

Filter persons and personal notes according to selected instance (group etc.)

parent e096d125
No related branches found
No related tags found
1 merge request!67Resolve "[Week view] Show only group members"
Pipeline #3045 passed
...@@ -88,15 +88,15 @@ ...@@ -88,15 +88,15 @@
{% blocktrans %}Personal notes{% endblocktrans %} {% blocktrans %}Personal notes{% endblocktrans %}
</span> </span>
{% for person in persons %} {% for person in persons %}
<h5 class="card-title">{{ person.full_name }}</h5> <h5 class="card-title">{{ person.person.full_name }}</h5>
<p class="card-text"> <p class="card-text">
{% trans "Absent" %}: {{ person.absences_count }} {% trans "Absent" %}: {{ person.person.absences_count }}
({{ person.unexcused_count }} {% trans "unexcused" %}) ({{ person.person.unexcused_count }} {% trans "unexcused" %})
</p> </p>
<p class="card-text"> <p class="card-text">
{% trans "Summed up tardiness" %}: {{ person.tardiness_sum }}' {% trans "Summed up tardiness" %}: {{ person.person.tardiness_sum }}'
</p> </p>
{% for note in person.personal_notes|only_week:week %} {% for note in person.personal_notes %}
{% if note.remarks %} {% if note.remarks %}
<blockquote> <blockquote>
{{ note.remarks }} {{ note.remarks }}
......
...@@ -184,16 +184,25 @@ def week_view( ...@@ -184,16 +184,25 @@ def week_view(
if lesson_periods: if lesson_periods:
# Aggregate all personal notes for this group and week # Aggregate all personal notes for this group and week
persons = ( lesson_periods_pk = list(lesson_periods.values_list("pk", flat=True))
Person.objects.filter(is_active=True)
.filter(member_of__lessons__lesson_periods__in=lesson_periods) persons_qs = Person.objects.filter(is_active=True)
.distinct()
if group:
persons_qs = persons_qs.filter(member_of=group)
else:
persons_qs = persons_qs.filter(
member_of__lessons__lesson_periods__in=lesson_periods_pk
)
persons_qs = (
persons_qs.distinct()
.prefetch_related("personal_notes") .prefetch_related("personal_notes")
.annotate( .annotate(
absences_count=Count( absences_count=Count(
"personal_notes", "personal_notes",
filter=Q( filter=Q(
personal_notes__lesson_period__in=lesson_periods, personal_notes__lesson_period__in=lesson_periods_pk,
personal_notes__week=wanted_week.week, personal_notes__week=wanted_week.week,
personal_notes__absent=True, personal_notes__absent=True,
), ),
...@@ -202,7 +211,7 @@ def week_view( ...@@ -202,7 +211,7 @@ def week_view(
unexcused_count=Count( unexcused_count=Count(
"personal_notes", "personal_notes",
filter=Q( filter=Q(
personal_notes__lesson_period__in=lesson_periods, personal_notes__lesson_period__in=lesson_periods_pk,
personal_notes__week=wanted_week.week, personal_notes__week=wanted_week.week,
personal_notes__absent=True, personal_notes__absent=True,
personal_notes__excused=False, personal_notes__excused=False,
...@@ -212,7 +221,7 @@ def week_view( ...@@ -212,7 +221,7 @@ def week_view(
tardiness_sum=Subquery( tardiness_sum=Subquery(
Person.objects.filter( Person.objects.filter(
pk=OuterRef("pk"), pk=OuterRef("pk"),
personal_notes__lesson_period__in=lesson_periods, personal_notes__lesson_period__in=lesson_periods_pk,
personal_notes__week=wanted_week.week, personal_notes__week=wanted_week.week,
) )
.distinct() .distinct()
...@@ -221,6 +230,17 @@ def week_view( ...@@ -221,6 +230,17 @@ def week_view(
), ),
) )
) )
persons = []
for person in persons_qs:
persons.append(
{
"person": person,
"personal_notes": person.personal_notes.filter(
week=wanted_week.week, lesson_period__in=lesson_periods_pk
),
}
)
else: else:
persons = None persons = None
......
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