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

Allow adding remarks when marking absences for full days.

parent f6b81691
No related branches found
No related tags found
No related merge requests found
...@@ -57,3 +57,4 @@ class ManageAbsenceForm(forms.Form): ...@@ -57,3 +57,4 @@ class ManageAbsenceForm(forms.Form):
person = forms.ModelChoiceField(label=_('Person'), queryset=Person.objects.all(), widget=Select2Widget) person = forms.ModelChoiceField(label=_('Person'), queryset=Person.objects.all(), widget=Select2Widget)
absent = forms.BooleanField(label=_('Absent'), initial=True, required=False) absent = forms.BooleanField(label=_('Absent'), initial=True, required=False)
excused = forms.BooleanField(label=_('Excused'), initial=True, required=False) excused = forms.BooleanField(label=_('Excused'), initial=True, required=False)
remarks = forms.CharField(label=_('Remarks'), max_length=30, required=False)
from datetime import date from datetime import date
from typing import Optional from typing import Optional
from django.db.models import Exists, OuterRef from django.db.models import Exists, F, OuterRef
from biscuit.apps.chronos.models import LessonPeriod from biscuit.apps.chronos.models import LessonPeriod
from biscuit.apps.chronos.util import CalendarWeek from biscuit.apps.chronos.util import CalendarWeek
...@@ -11,7 +11,7 @@ from .models import PersonalNote ...@@ -11,7 +11,7 @@ from .models import PersonalNote
@Person.method @Person.method
def mark_absent(self, day: date, starting_period: Optional[int] = 0, absent=True, excused=False): def mark_absent(self, day: date, starting_period: Optional[int] = 0, absent=True, excused=False, remarks=''):
""" Mark a person absent for all lessons in a day, optionally starting with """ Mark a person absent for all lessons in a day, optionally starting with
a selected period number. a selected period number.
...@@ -42,7 +42,8 @@ def mark_absent(self, day: date, starting_period: Optional[int] = 0, absent=True ...@@ -42,7 +42,8 @@ def mark_absent(self, day: date, starting_period: Optional[int] = 0, absent=True
week=wanted_week.week, week=wanted_week.week,
defaults={ defaults={
'absent': absent, 'absent': absent,
'excused': excused 'excused': excused,
'remarks': F('remarks') + remarks
} }
) )
......
...@@ -221,13 +221,14 @@ def manage_absence(request: HttpRequest) -> HttpResponse: ...@@ -221,13 +221,14 @@ def manage_absence(request: HttpRequest) -> HttpResponse:
starting_lesson = manage_absence_form.cleaned_data['starting_lesson'] starting_lesson = manage_absence_form.cleaned_data['starting_lesson']
absent = manage_absence_form.cleaned_data['absent'] absent = manage_absence_form.cleaned_data['absent']
excused = manage_absence_form.cleaned_data['excused'] excused = manage_absence_form.cleaned_data['excused']
remarks = manage_absence_form.cleaned_data=['remarks']
# Mark person as absent # Mark person as absent
delta = end_date - start_date delta = end_date - start_date
for i in range(delta.days): for i in range(delta.days):
starting_period = starting_lesson if i == 0 else 0 starting_period = starting_lesson if i == 0 else 0
day = start_date + timedelta(days=1) day = start_date + timedelta(days=1)
person.mark_absent(day, starting_period=starting_period, absent=absent, excused=excused) person.mark_absent(day, starting_period=starting_period, absent=absent, excused=excused, remarks=remarks)
person.save() person.save()
messages.success(request, _('The absence has been saved.')) messages.success(request, _('The absence has been saved.'))
......
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