mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 15:33:22 +00:00
feat: Gestion des inscriptions [#1] feat(frontend): Création des vues pour le paramétrage de l'école [#2] feat: Gestion du login [#6] fix: Correction lors de la migration des modèle [#8] feat: Révision du menu principal [#9] feat: Ajout d'un footer [#10] feat: Création des dockers compose pour les environnements de développement et de production [#12] doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
182 lines
6.7 KiB
Python
182 lines
6.7 KiB
Python
from django.shortcuts import render,get_object_or_404,get_list_or_404
|
|
from .models import FicheInscription, Eleve, Responsable, Frere
|
|
import time
|
|
from datetime import date, datetime, timedelta
|
|
from zoneinfo import ZoneInfo
|
|
from django.conf import settings
|
|
from N3wtSchool import renderers
|
|
from N3wtSchool import bdd
|
|
|
|
from io import BytesIO
|
|
from django.core.files import File
|
|
from pathlib import Path
|
|
import os
|
|
from enum import Enum
|
|
|
|
import random
|
|
import string
|
|
from rest_framework.parsers import JSONParser
|
|
|
|
def recupereListeFichesInscription():
|
|
context = {
|
|
"ficheInscriptions_list": bdd.getAllObjects(FicheInscription),
|
|
}
|
|
return context
|
|
|
|
def recupereListeFichesInscriptionEnAttenteSEPA():
|
|
|
|
ficheInscriptionsSEPA_list = FicheInscription.objects.filter(modePaiement="Prélèvement SEPA").filter(etat=FicheInscription.EtatDossierInscription['SEPA_ENVOYE'])
|
|
return ficheInscriptionsSEPA_list
|
|
|
|
def updateEleve(eleve, inputs, erase=False):
|
|
eleve.nom = inputs["nomEleve"]
|
|
eleve.prenom = inputs["prenomEleve"]
|
|
eleve.ambiance = inputs["ambiance"]
|
|
eleve.genre = inputs["genre"]
|
|
eleve.adresse = inputs["adresseEleve"]
|
|
eleve.dateNaissance = inputs["dateNaissanceEleve"]
|
|
eleve.lieuNaissance = inputs["lieuNaissanceEleve"]
|
|
eleve.codePostalNaissance = inputs["codePostalNaissanceEleve"]
|
|
eleve.nationalite = inputs["nationaliteEleve"]
|
|
eleve.medecinTraitant = inputs["medecinTraitantEleve"]
|
|
|
|
|
|
responsable=eleve.getResponsablePrincipal()
|
|
responsable.adresse = inputs["adresseResponsable1"]
|
|
responsable.dateNaissance = inputs["dateNaissanceResponsable1"]
|
|
responsable.profession = inputs["professionResponsable1"]
|
|
responsable.save()
|
|
|
|
# Création du 2ème responsable
|
|
if inputs["nomResponsable2"] != "" and inputs["prenomResponsable2"] != "":
|
|
responsable2 = Responsable.objects.create(nom=inputs["nomResponsable2"],
|
|
prenom=inputs["prenomResponsable2"],
|
|
dateNaissance=inputs["dateNaissanceResponsable2"],
|
|
adresse=inputs["adresseResponsable2"],
|
|
mail=inputs["mailResponsable2"],
|
|
telephone=inputs["telephoneResponsable2"],
|
|
profession=inputs["professionResponsable2"])
|
|
responsable2.save()
|
|
eleve.responsables.add(responsable2)
|
|
|
|
# Création du 1er frère
|
|
if inputs["nomFrere1"] != "" and inputs["prenomFrere1"] != "":
|
|
frere1 = Frere.objects.create(nom=inputs["nomFrere1"],
|
|
prenom=inputs["prenomFrere1"],
|
|
dateNaissance=inputs["dateNaissanceFrere1"])
|
|
frere1.save()
|
|
eleve.freres.add(frere1)
|
|
|
|
# Création du 2ème frère
|
|
if inputs["nomFrere2"] != "" and inputs["prenomFrere2"] != "":
|
|
frere2 = Frere.objects.create(nom=inputs["nomFrere2"],
|
|
prenom=inputs["prenomFrere2"],
|
|
dateNaissance=inputs["dateNaissanceFrere2"])
|
|
frere2.save()
|
|
eleve.freres.add(frere2)
|
|
|
|
eleve.save()
|
|
|
|
def _now():
|
|
return datetime.now(ZoneInfo(settings.TZ_APPLI))
|
|
|
|
def convertToStr(dateValue, dateFormat):
|
|
return dateValue.strftime(dateFormat)
|
|
|
|
def convertToDate(date_time):
|
|
format = '%d-%m-%Y %H:%M'
|
|
datetime_str = datetime.strptime(date_time, format)
|
|
|
|
return datetime_str
|
|
|
|
def convertTelephone(telephoneValue, separator='-'):
|
|
return f"{telephoneValue[:2]}{separator}{telephoneValue[2:4]}{separator}{telephoneValue[4:6]}{separator}{telephoneValue[6:8]}{separator}{telephoneValue[8:10]}"
|
|
|
|
def generePDF(ficheEleve):
|
|
data = {
|
|
'pdf_title': "Dossier d'inscription de %s"%ficheEleve.eleve.prenom,
|
|
'dateSignature': convertToStr(_now(), '%d-%m-%Y'),
|
|
'heureSignature': convertToStr(_now(), '%H:%M'),
|
|
'eleve':ficheEleve.eleve,
|
|
}
|
|
|
|
pdf = renderers.render_to_pdf('pdfs/dossier_inscription.html', data)
|
|
|
|
nomFichierPDF = "Dossier_Inscription_%s_%s.pdf"%(ficheEleve.eleve.nom, ficheEleve.eleve.prenom)
|
|
pathFichier = Path(settings.DOCUMENT_DIR + "/" + nomFichierPDF)
|
|
if os.path.exists(str(pathFichier)):
|
|
os.remove(str(pathFichier))
|
|
|
|
receipt_file = BytesIO(pdf.content)
|
|
# fichier = Fichier.objects.create(fiche_inscription=ficheEleve)
|
|
# fichier.document = File(receipt_file, nomFichierPDF)
|
|
# fichier.save()
|
|
|
|
def genereRandomCode(length):
|
|
return ''.join(random.choice(string.ascii_letters) for i in range(length))
|
|
|
|
def calculeDatePeremption(_start, nbDays):
|
|
return convertToStr(_start + timedelta(days=nbDays), settings.DATE_FORMAT)
|
|
|
|
# Fonction permettant de retourner la valeur du QueryDict
|
|
# QueryDict [ index ] -> Dernière valeur d'une liste
|
|
# dict (QueryDict [ index ]) -> Toutes les valeurs de la liste
|
|
def _(liste):
|
|
return liste[0]
|
|
|
|
def toNewEleveJSONRequest(jsonOrigin):
|
|
etat=FicheInscription.EtatDossierInscription.DI_CREE
|
|
telephone = convertTelephone(_(jsonOrigin['telephoneResponsable']))
|
|
finalJSON = {
|
|
"eleve":
|
|
{
|
|
"nom" : _(jsonOrigin['nomEleve']),
|
|
"prenom" : _(jsonOrigin['prenomEleve']),
|
|
"responsables" : [
|
|
{
|
|
"nom" : _(jsonOrigin['nomResponsable']),
|
|
"prenom" : _(jsonOrigin['prenomResponsable']),
|
|
"mail" : _(jsonOrigin['mailResponsable']),
|
|
"telephone" : telephone
|
|
}
|
|
],
|
|
"profils" : [
|
|
],
|
|
},
|
|
"etat": str(etat),
|
|
"dateMAJ": str(convertToStr(_now(), '%d-%m-%Y %H:%M')),
|
|
}
|
|
print(finalJSON)
|
|
return finalJSON
|
|
|
|
def toEditEleveJSONRequest(jsonOrigin):
|
|
telephone = convertTelephone(_(jsonOrigin['telephoneResponsable']), '.')
|
|
finalJSON = {
|
|
"eleve":
|
|
{
|
|
"id" : _(jsonOrigin['fiche_id']),
|
|
"nom" : _(jsonOrigin['nomEleve']),
|
|
"prenom" : _(jsonOrigin['prenomEleve']),
|
|
"responsables" : [
|
|
{
|
|
"id" : _(jsonOrigin['responsable_id']),
|
|
"nom" : _(jsonOrigin['nomResponsable']),
|
|
"prenom" : _(jsonOrigin['prenomResponsable']),
|
|
"mail" : _(jsonOrigin['mailResponsable']),
|
|
"telephone" : telephone
|
|
}
|
|
],
|
|
"profils" : [
|
|
],
|
|
},
|
|
"dateMAJ": str(convertToStr(_now(), '%d-%m-%Y %H:%M')),
|
|
}
|
|
print(finalJSON)
|
|
return finalJSON
|
|
|
|
def getArgFromRequest(_argument, _request):
|
|
resultat = None
|
|
data=JSONParser().parse(_request)
|
|
resultat = data[_argument]
|
|
return resultat
|