From 6782f58201d634a9d6cff5a1085bf36c70dadc15 Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Tue, 19 Nov 2019 20:53:49 +0100 Subject: [PATCH] Add basic view logic. --- biscuit/apps/alsijil/forms.py | 2 +- biscuit/apps/alsijil/views.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/biscuit/apps/alsijil/forms.py b/biscuit/apps/alsijil/forms.py index 8278d40e2..140e74071 100644 --- a/biscuit/apps/alsijil/forms.py +++ b/biscuit/apps/alsijil/forms.py @@ -53,7 +53,7 @@ PersonalNoteFormSet = forms.modelformset_factory( class AbsentExcusedForm(forms.Form): date_start = forms.DateField(label=_('Start date'), widget=forms.SelectDateWidget, initial=datetime.today()) date_end = forms.DateField(label=_('End date'), widget=forms.SelectDateWidget, initial=datetime.today()) - starting_lesson = forms.ChoiceField(label=_('Starting lesson')) + starting_lesson = forms.IntegerField(label=_('Starting lesson')) person = forms.ModelChoiceField(label=_('Person'), queryset=Person.objects.all(), widget=Select2Widget) absent = forms.BooleanField(label=_('Absent')) excused = forms.BooleanField(label=_('Excused')) diff --git a/biscuit/apps/alsijil/views.py b/biscuit/apps/alsijil/views.py index 3c5984886..c31e5c8e1 100644 --- a/biscuit/apps/alsijil/views.py +++ b/biscuit/apps/alsijil/views.py @@ -13,6 +13,7 @@ from biscuit.apps.chronos.models import LessonPeriod from biscuit.apps.chronos.util import CalendarWeek from biscuit.core.models import Group, Person from biscuit.core.decorators import admin_required +from biscuit.core.util import messages from .forms import AbsentExcusedForm, LessonDocumentationForm, PersonalNoteFormSet, SelectForm from .models import LessonDocumentation @@ -215,8 +216,20 @@ def absences_excuses(request: HttpRequest) -> HttpResponse: if request.method == 'POST': if manage_absence_form.is_valid(): # Get person from form - person = Person.objects.get(id=manage_absence_form.cleaned_data['person']) - + person = manage_absence_form.cleaned_data['person'] + + # Get dates and starting lesson + start_date = manage_absence_form.cleaned_data['date_start'] + end_date = manage_absence_form.cleaned_data['date_end'] + starting_lesson = manage_absence_form.cleaned_data['starting_lesson'] + + # Mark person as absent + day_list = [] + delta = end_date - start_date + for i in range(delta.days+1): + day = start_date + timedelta(days=1) + person.mark_absent(day, absent=manage_absence_form.cleaned_data['absent'], excused=manage_absence_form.cleaned_data['excused']) + person.save() messages.success(request, _('The absence has been saved.')) return redirect(request, 'index.html') -- GitLab