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