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

[Lesson overview] Show extra marks of previous lesson

parent 2197e680
No related branches found
No related tags found
1 merge request!68Resolve "Add option to configure extra marks for personal notes"
Pipeline #3065 passed
from datetime import date
from typing import Optional, Union
from typing import Dict, Optional, Union
from django.db.models import Exists, OuterRef, QuerySet
......@@ -8,7 +8,7 @@ from calendarweek import CalendarWeek
from aleksis.apps.chronos.models import LessonPeriod
from aleksis.core.models import Group, Person
from .models import LessonDocumentation, PersonalNote
from .models import ExtraMark, LessonDocumentation, PersonalNote
@Person.method
......@@ -150,3 +150,20 @@ def get_tardinesses(self, week: Optional[CalendarWeek] = None) -> QuerySet:
if not week:
week = self.week
return self.personal_notes.filter(week=week.week, late__gt=0)
@LessonPeriod.method
def get_extra_marks(
self, week: Optional[CalendarWeek] = None
) -> Dict[ExtraMark, QuerySet]:
"""Get all statistics on extra marks for this lesson."""
if not week:
week = self.week
stats = {}
for extra_mark in ExtraMark.objects.all():
qs = self.personal_notes.filter(week=week.week, extra_marks=extra_mark)
if qs:
stats[extra_mark] = qs
return stats
......@@ -60,7 +60,7 @@
<div class="row">
<div class="col s12 m12 l6 xl8">
{% with prev_lesson=lesson_period.prev prev_doc=prev_lesson.get_lesson_documentation %}
{% with prev_doc=prev_lesson.get_lesson_documentation absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses %}
{% with prev_doc=prev_lesson.get_lesson_documentation absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses extra_marks=prev_lesson.get_extra_marks %}
{% if prev_doc %}
{% weekday_to_date prev_lesson.week prev_lesson.period.weekday as prev_date %}
......@@ -99,6 +99,18 @@
<td>{% include "alsijil/partials/tardinesses.html" with notes=tardinesses %}</td>
</tr>
{% endif %}
{% for extra_mark, notes in extra_marks.items %}
<tr>
<th>{{ extra_mark.name }}</th>
<td>
{% for note in notes %}
<span>{{ note.person }}{% if not forloop.last %},{% endif %}</span>
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
......
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