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]
123 lines
4.7 KiB
Python
123 lines
4.7 KiB
Python
from django.db import models
|
|
from django.utils.timezone import now
|
|
from django.conf import settings
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from GestionLogin.models import Profil
|
|
|
|
class Langue(models.Model):
|
|
id = models.AutoField(primary_key=True)
|
|
libelle = models.CharField(max_length=200, default="")
|
|
|
|
def __str__(self):
|
|
return "LANGUE"
|
|
|
|
class Responsable(models.Model):
|
|
nom = models.CharField(max_length=200, default="")
|
|
prenom = models.CharField(max_length=200, default="")
|
|
dateNaissance = models.CharField(max_length=200, default="", blank=True)
|
|
adresse = models.CharField(max_length=200, default="", blank=True)
|
|
mail = models.CharField(max_length=200, default="", blank=True)
|
|
telephone = models.CharField(max_length=200, default="", blank=True)
|
|
profession = models.CharField(max_length=200, default="", blank=True)
|
|
profilAssocie = models.ForeignKey(Profil, on_delete=models.CASCADE)
|
|
|
|
def __str__(self):
|
|
return self.nom + "_" + self.prenom
|
|
|
|
class Frere(models.Model):
|
|
id = models.AutoField(primary_key=True)
|
|
nom = models.CharField(max_length=200, default="")
|
|
prenom = models.CharField(max_length=200, default="")
|
|
dateNaissance = models.CharField(max_length=200, default="", blank=True)
|
|
|
|
def __str__(self):
|
|
return "FRERE"
|
|
|
|
class Eleve(models.Model):
|
|
|
|
class GenreEleve(models.IntegerChoices):
|
|
NONE = 0, _('Sélection du genre')
|
|
MALE = 1, _('Garçon')
|
|
FEMALE = 2, _('Fille')
|
|
|
|
class NiveauEleve(models.IntegerChoices):
|
|
NONE = 0, _('Sélection du niveau')
|
|
TPS = 1, _('TPS - Très Petite Section')
|
|
PS = 2, _('PS - Petite Section')
|
|
MS = 3, _('MS - Moyenne Section')
|
|
GS = 4, _('GS - Grande Section')
|
|
|
|
class ModePaiement(models.IntegerChoices):
|
|
NONE = 0, _('Sélection du mode de paiement')
|
|
PRELEVEMENT_SEPA = 1, _('Prélèvement SEPA')
|
|
CHEQUE = 2, _('Chèque')
|
|
|
|
nom = models.CharField(max_length=200, default="")
|
|
prenom = models.CharField(max_length=200, default="")
|
|
genre = models.IntegerField(choices=GenreEleve, default=GenreEleve.NONE, blank=True)
|
|
niveau = models.IntegerField(choices=NiveauEleve, default=NiveauEleve.NONE, blank=True)
|
|
nationalite = models.CharField(max_length=200, default="", blank=True)
|
|
adresse = models.CharField(max_length=200, default="", blank=True)
|
|
dateNaissance = models.CharField(max_length=200, default="", blank=True)
|
|
lieuNaissance = models.CharField(max_length=200, default="", blank=True)
|
|
codePostalNaissance = models.IntegerField(default=0, blank=True)
|
|
medecinTraitant = models.CharField(max_length=200, default="", blank=True)
|
|
modePaiement = models.IntegerField(choices=ModePaiement, default=ModePaiement.NONE, blank=True)
|
|
|
|
# Relation N-N
|
|
profils = models.ManyToManyField(Profil, blank=True)
|
|
|
|
# Relation N-N
|
|
responsables = models.ManyToManyField(Responsable, blank=True)
|
|
|
|
# Relation N-N
|
|
freres = models.ManyToManyField(Frere, blank=True)
|
|
|
|
# Relation N-N
|
|
languesParlees = models.ManyToManyField(Langue, blank=True)
|
|
|
|
def __str__(self):
|
|
return self.nom + "_" + self.prenom
|
|
|
|
def getLanguesParlees(self):
|
|
return self.languesParlees.all()
|
|
|
|
def getResponsablePrincipal(self):
|
|
return self.responsables.all()[0]
|
|
|
|
def getResponsables(self):
|
|
return self.responsables.all()
|
|
|
|
def getProfils(self):
|
|
return self.profils.all()
|
|
|
|
def getFreres(self):
|
|
return self.freres.all()
|
|
|
|
def getNbFreres(self):
|
|
return self.freres.count()
|
|
|
|
class FicheInscription(models.Model):
|
|
|
|
class EtatDossierInscription(models.IntegerChoices):
|
|
DI_ABSENT = 0, _('Pas de dossier d\'inscription')
|
|
DI_CREE = 1, _('Dossier d\'inscription créé')
|
|
DI_ENVOYE = 2, _('Dossier d\'inscription envoyé')
|
|
DI_EN_VALIDATION = 3, _('Dossier d\'inscription en cours de validation')
|
|
DI_A_RELANCER = 4, _('Dossier d\'inscription à relancer')
|
|
DI_VALIDE = 5, _('Dossier d\'inscription validé')
|
|
DI_ARCHIVE = 6, _('Dossier d\'inscription archivé')
|
|
|
|
# Relation 1-1
|
|
eleve = models.OneToOneField(Eleve, on_delete=models.CASCADE, primary_key=True)
|
|
etat = models.IntegerField(choices=EtatDossierInscription, default=EtatDossierInscription.DI_ABSENT)
|
|
dateMAJ = models.DateTimeField(auto_now=True)
|
|
notes = models.CharField(max_length=200, blank=True)
|
|
codeLienInscription = models.CharField(max_length=200, default="", blank=True)
|
|
fichierInscription = models.FileField(upload_to=settings.DOCUMENT_DIR, default="", blank=True)
|
|
di_associe = models.CharField(max_length=200, default="", blank=True)
|
|
|
|
def __str__(self):
|
|
return "FI_" + self.eleve.nom + "_" + self.eleve.prenom
|
|
|