97 lines
4.8 KiB
Python
97 lines
4.8 KiB
Python
from django.db import models
|
|
|
|
from .garnison import Garnison
|
|
from .user import CustomUser
|
|
|
|
|
|
class GroupeFe(models.Model):
|
|
"""
|
|
Modèle de groupes FE
|
|
"""
|
|
groupe_fe_nom = models.CharField(primary_key=True, max_length=100, verbose_name='Groupe de FE')
|
|
|
|
def __str__(self):
|
|
return self.groupe_fe_nom
|
|
|
|
|
|
class PcpFeGroupe(models.Model):
|
|
"""
|
|
Modèle d'association des groupes de FE aux gestionnaires PCP
|
|
"""
|
|
|
|
CATEGORIE_CHOICES = [('MDR', 'MDR'), ('OFF', 'OFF'), ('SOFF', 'SOFF'), ('OGX', 'OGX')]
|
|
pcp_fe_id = models.AutoField(primary_key=True)
|
|
pcp_fe_groupe = models.ForeignKey(GroupeFe, null=True, blank=True, on_delete=models.CASCADE,
|
|
verbose_name='Nom du groupe')
|
|
pcp_fe_categorie = models.CharField(max_length=5, choices=CATEGORIE_CHOICES, null=True, blank=True, verbose_name='Catégorie')
|
|
gestionnaire = models.ForeignKey(CustomUser, on_delete=models.CASCADE, null=True, blank=True, db_constraint=False)
|
|
|
|
def __str__(self):
|
|
return str(self.gestionnaire.first_name) + ' ' + str(self.gestionnaire.last_name.upper()) + ' / ' + self.pcp_fe_groupe.groupe_fe_nom + ' / ' + self.pcp_fe_categorie
|
|
|
|
class Meta:
|
|
verbose_name = 'Lien gest PCP / groupe FE'
|
|
verbose_name_plural = 'Liens gest PCP / groupe FE'
|
|
|
|
|
|
class FormationEmploi(models.Model):
|
|
"""
|
|
Modèle des formations d'emplois
|
|
"""
|
|
|
|
class Cols():
|
|
""" Constantes pour les noms de colonnes """
|
|
|
|
PK = 'fe_code'
|
|
LIBELLE = 'fe_libelle'
|
|
ZONE_DEFENSE = 'zone_defense'
|
|
REL_MERE = 'mere'
|
|
REL_POSTE = 'poste'
|
|
M2M_GESTIONNAIRE = 'gestionnaires'
|
|
|
|
fe_code = models.CharField(primary_key=True, max_length=100)
|
|
groupe_fe = models.ForeignKey(GroupeFe, blank=True, on_delete=models.SET_NULL, null=True)
|
|
gestionnaires = models.ManyToManyField(CustomUser, related_name=CustomUser.Cols.M2M_FORMATION_EMPLOIS, blank=True)
|
|
fe_code_postal = models.CharField(max_length=100, null=True, blank=True)
|
|
fe_garnison_lieu = models.CharField(max_length=100, null=True, blank=True)
|
|
fe_libelle = models.CharField(max_length=100, null=True, blank=True)
|
|
fe_taux_armement_cible_off = models.FloatField(null=True, blank=True, verbose_name="TA cible OFF")
|
|
fe_nb_poste_reo_off = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_reevalue_off = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_vacant_off = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_occupe_off = models.IntegerField(null=True, blank=True)
|
|
fe_taux_armement_cible_soff = models.FloatField(null=True, blank=True, verbose_name="TA cible SOFF")
|
|
fe_nb_poste_reo_soff = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_reevalue_soff = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_vacant_soff = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_occupe_soff = models.IntegerField(null=True, blank=True)
|
|
fe_taux_armement_cible_mdr = models.FloatField(null=True, blank=True, verbose_name="TA cible MDR")
|
|
fe_nb_poste_reo_mdr = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_reevalue_mdr = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_vacant_mdr = models.IntegerField(null=True, blank=True)
|
|
fe_nb_poste_occupe_mdr = models.IntegerField(null=True, blank=True)
|
|
fe_mere_credo = models.CharField('Code FE mère', max_length=100, null=True, blank=True)
|
|
fe_mere_la = models.CharField('Libelle FE mère', max_length=100, null=True, blank=True)
|
|
fe_fot = models.CharField(max_length=100, null=True, blank=True)
|
|
fe_abo_fe = models.CharField(max_length=100, null=True, blank=True)
|
|
fe_pilier_niv1 = models.CharField(max_length=100, null=True, blank=True)
|
|
fe_code_niv_org4 = models.CharField('Code niveau d\'org 4', max_length=100, null=True, blank=True)
|
|
fe_niv_org4 = models.CharField('Libelle niveau d\'org 4', max_length=100, null=True, blank=True)
|
|
fe_code_niv_org4_mdr = models.CharField('Code niveau d\'org 4 (MDR)', max_length=100, null=True, blank=True)
|
|
fe_niv_org4_mdr = models.CharField('Libelle niveau d\'org 4 (MDR)', max_length=100, null=True, blank=True)
|
|
|
|
zone_defense = models.CharField('zone de défense', db_column='fe_zone_defense', max_length=64, blank=True, null=True)
|
|
mere = models.ForeignKey('self', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='FE mère', db_column='fe_mere_id')
|
|
|
|
def as_dict(self):
|
|
return {
|
|
"id": self.fe_code,
|
|
"code": self.fe_code,
|
|
"libelle": self.fe_libelle,
|
|
"mere_code": self.fe_mere_credo,
|
|
"mere_la": self.fe_mere_la,
|
|
"groupe_fe": self.groupe_fe_id,
|
|
"fe_garnison_lieu": self.fe_garnison_lieu,
|
|
"zone_defense": self.zone_defense
|
|
}
|