From 483ffee614f211ad6ec195203ee7d99973ec7c71 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 11 Jul 2020 21:53:07 +0200 Subject: [PATCH] Add excuse_type to personal note form --- aleksis/apps/alsijil/forms.py | 2 +- aleksis/apps/alsijil/model_extensions.py | 5 +++-- .../templates/alsijil/class_register/lesson.html | 9 +++++++++ aleksis/apps/alsijil/views.py | 10 ++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 99954b530..f8e791e38 100644 --- a/aleksis/apps/alsijil/forms.py +++ b/aleksis/apps/alsijil/forms.py @@ -28,7 +28,7 @@ class LessonDocumentationForm(forms.ModelForm): class PersonalNoteForm(forms.ModelForm): class Meta: model = PersonalNote - fields = ["absent", "late", "excused", "remarks"] + fields = ["absent", "late", "excused", "excuse_type", "remarks"] person_name = forms.CharField(disabled=True) diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 57768babb..a09aa38c9 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -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 ExcuseType, LessonDocumentation, PersonalNote @Person.method @@ -18,6 +18,7 @@ def mark_absent( from_period: int = 0, absent: bool = True, excused: bool = False, + excuse_type: Optional[ExcuseType] = None, remarks: str = "", ): """Mark a person absent for all lessons in a day, optionally starting with a selected period number. @@ -44,7 +45,7 @@ def mark_absent( person=self, lesson_period=lesson_period, week=wanted_week.week, - defaults={"absent": absent, "excused": excused}, + defaults={"absent": absent, "excused": excused, "excuse_type": excuse_type}, ) if remarks: diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html index 5748e84a6..6545bf9c3 100644 --- a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html +++ b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html @@ -144,6 +144,7 @@ <th>{% blocktrans %}Absent{% endblocktrans %}</th> <th>{% blocktrans %}Tardiness{% endblocktrans %}</th> <th>{% blocktrans %}Excused{% endblocktrans %}</th> + <th>{% blocktrans %}Excuse type{% endblocktrans %}</th> <th>{% blocktrans %}Remarks{% endblocktrans %}</th> </tr> </thead> @@ -172,6 +173,14 @@ <span></span> </label> </td> + <td> + <div class="input-field"> + {{ form.excuse_type }} + <label for="{{ form.excuse_type.id_for_label }}"> + {% trans "Excuse type" %} + </label> + </div> + </td> <td> <div class="input-field"> {{ form.remarks }} diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 25868ba0d..03e710eeb 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -102,6 +102,8 @@ def lesson( if lesson_documentation_form.is_valid(): lesson_documentation_form.save() + messages.success(request, _("The lesson documentation has been saved.")) + if personal_note_formset.is_valid(): instances = personal_note_formset.save() @@ -112,8 +114,16 @@ def lesson( lesson_period.period.period + 1, instance.absent, instance.excused, + instance.excuse_type, ) + messages.success(request, _("The personal notes have been saved.")) + + # Regenerate form here to ensure that programmatically changed data will be shown correctly + personal_note_formset = PersonalNoteFormSet( + None, queryset=persons_qs, prefix="personal_notes" + ) + context["lesson_documentation"] = lesson_documentation context["lesson_documentation_form"] = lesson_documentation_form context["personal_note_formset"] = personal_note_formset -- GitLab