diff --git a/biscuit/apps/alsijil/forms.py b/biscuit/apps/alsijil/forms.py index 8278d40e220bac51ba3ba033ab2615097058c87b..140e7407126d1408c9c03ff135bd01a698f5359b 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 3c59848861ef3863800f180b7e3a459ee6faa187..c31e5c8e1aba179dbf257bbd787415ce8b64e384 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')