def ajouterJustificatif(request, absence_id, page_precedente, id_precedent): absence = get_object_or_404(Absence, pk=absence_id) cours = absence.cours error = False if request.method == "POST": form = JustificatifForm(request.POST) if form.is_valid(): raison = form.cleaned_data["raison"] justificatif = Justificatif( genre=raison, dateDebut=cours.dateDebut, dateFin=cours.dateFin, user=absence.etudiant ) justificatif.save() absence.justifie = True absence.justificatif = justificatif absence.save() messages.success(request, "Le justification a bien été ajouté.") return redirect("absences:consultationCours", cours_id=cours.id) else: form = JustificatifForm() return render(request, "absences/ajouterJustificatif.html", {"absence": absence, "form": form})
def ajouterMultipleJustificatif(request): """Aouter un justificatif pour plusieurs cours""" form = None if request.method == "POST": form = JustificatifMultipleForm(request.POST) if form.is_valid(): etudiantObject = Etudiant.objects.get(user=form.cleaned_data["etudiant"]) matieres = request.POST.getlist("matieres") matieres = [int(m) for m in matieres] dateDebut = form.cleaned_data["dateDebut"] dateFin = form.cleaned_data["dateFin"] raison = form.cleaned_data["raison"] justificatif = Justificatif(genre=raison, dateDebut=dateDebut, dateFin=dateFin, user=etudiantObject) justificatif.save() justificatif.matiere.add(*matieres) justificatif.save() absences = Absence.objects.filter(etudiant_id=etudiantObject.id, justifie=False) for absence in absences: if ( (absence.cours.dateDebut <= dateDebut and absence.cours.dateFin <= dateFin) or (absence.cours.dateDebut >= dateDebut and absence.cours.dateFin >= dateFin) or (absence.cours.dateDebut <= dateDebut and absence.cours.dateFin >= dateFin) or (absence.cours.dateDebut >= dateDebut and absence.cours.dateFin <= dateFin) ) and (absence.cours.matiere.id in matieres): absence.justifie = True absence.justificatif = justificatif absence.save() messages.success(request, "Le justificatif a bien été ajouté pour {0}.".format(etudiantObject)) return redirect("absences:listeCours") else: form = JustificatifMultipleForm(request.POST) else: form = JustificatifMultipleForm() return render(request, "absences/ajouterJustificatifMultiple.html", {"form": form})