diff --git a/aleksis/apps/alsijil/tables.py b/aleksis/apps/alsijil/tables.py index c3835e973164f5a6cd3b50540fa7b9f5a3d4ea43..1ea4f23f4f2b6716e59cbba2ebbd51aca573553d 100644 --- a/aleksis/apps/alsijil/tables.py +++ b/aleksis/apps/alsijil/tables.py @@ -1,9 +1,15 @@ from django.template.loader import render_to_string +<<<<<<< HEAD +======= +from django.urls import reverse +>>>>>>> 48d6587... Create a basic table for all PersonalNotes of an user from django.utils.translation import gettext_lazy as _ import django_tables2 as tables from django_tables2.utils import A +from .models import PersonalNote + class ExtraMarkTable(tables.Table): class Meta: @@ -78,3 +84,81 @@ class GroupRoleTable(tables.Table): self.columns.hide("edit") if not request.user.has_perm("alsijil.delete_grouprole"): self.columns.hide("delete") +class PersonalNoteTable(tables.Table): + lesson_period_lesson = tables.Column(verbose_name=_("Lesson"), accessor=A("lesson_period")) + # lesson_period_teacher = tables.Column(verbose_name=_("Teacher"), accessor=A("lesson_period__get_teacher_names")) + personal_note_date = tables.Column(verbose_name=_("Date"), accessor=A("date")) + lesson_period_period = tables.Column(verbose_name=_("Period"), accessor=A("lesson_period__period__period")) + # lesson_period_subject = tables.Column(verbose_name=_("Subject"), accessor=A("lesson_period__get_subject__name")) + absent = tables.Column(attrs={"td": {"class": "material-icons"}}) + excused = tables.Column(verbose_name=_("Excuse")) + extra_marks = tables.Column(verbose_name="Extra marks", accessor=A("extra_marks__all")) + + def render_lesson_period_period(self, value): + return str(value) + "." + + def render_lesson_period_lesson(self, value, record): + teachers = value.get_teacher_names() + subject = value.get_subject().name + pk = value.pk + week = record.week + year = record.year + + url = reverse("lesson_by_week_and_period", args=[year, week, pk]) + + context = dict(subject=subject, teachers=teachers, url=url) + + return render_to_string("alsijil/partials/personal_note_link.html", context) + + def render_absent(self, value): + return "check" if value else "clear" + + def render_excused(self, value, record): + if record.absent: + absent_badge = render_to_string("components/materialize-chips.html", + dict(content="Absent", classes="red white-text")) + if value: + context = dict(content=_("Excused"), classes="green white-text") + badge = render_to_string("components/materialize-chips.html", context) + if record.excuse_type: + context = dict(content=record.excuse_type.short_name, classes="green white-text") + badge = render_to_string("components/materialize-chips.html", context) + else: + badge = "" + return absent_badge + badge + else: + return "" + + def render_excuse_type(self, value): + if value: + content = value.short_name + context = dict(content=content, classes="green white-text") + return render_to_string("components/materialize-chips.html", context) + else: + return "–" + + def render_late(self, value): + if value: + content = _(f"{value}' late") + context = dict(content=content, classes="orange white-text") + return render_to_string("components/materialize-chips.html", context) + else: + return "–" + + def render_extra_marks(self, value): + if value: + badges = "" + for extra_mark in value: + content = extra_mark.short_name + badges += render_to_string("components/materialize-chips.html", context=dict(content=content)) + return badges + else: + return "–" + + class Meta: + model = PersonalNote + sequence = ( + "year", "week", "personal_note_date", "lesson_period_period", "lesson_period_lesson", + "absent", "excused", "late", "extra_marks", "remarks") + exclude = ("site", "id", "extended_data", "person", "lesson_period", "excuse_type") + template_name = "django_tables2/materialize.html"