init
This commit is contained in:
282
backend-django/backend/models/administre.py
Normal file
282
backend-django/backend/models/administre.py
Normal file
@@ -0,0 +1,282 @@
|
||||
from bulk_update_or_create import BulkUpdateOrCreateQuerySet
|
||||
from django.db import models
|
||||
|
||||
from .commun import NiveauFonctionnelChoices, SpecifiqueChoices
|
||||
from .competence import Competence
|
||||
from .domaine import Domaine
|
||||
from .filiere import Filiere
|
||||
from .fonction import Fonction
|
||||
from .formation_emploi import FormationEmploi
|
||||
from .grade import Grade
|
||||
from .sous_vivier import SousVivier
|
||||
from .pam import PAM
|
||||
class SuiviPrevisionnelMilitaire(models.TextChoices):
|
||||
"""
|
||||
[Administre] choix pour le gestionnaire PCP
|
||||
"""
|
||||
|
||||
MOB_EXT = 'MOB_EXT', 'Mobilité externe'
|
||||
MOB_INT = 'MOB_INT', 'Mobilité interne',
|
||||
NRCT = 'NRCT', 'NRCT',
|
||||
RDC = 'RDC', 'RDC',
|
||||
LMT = 'LMT', 'Limite de contrat',
|
||||
REC = 'REC', 'Reconversion',
|
||||
REC_OE = 'REC_OE', 'Recrutement OE',
|
||||
DFP = 'DFP', 'Détachement FP',
|
||||
|
||||
|
||||
class StatutFuturChoices(models.TextChoices):
|
||||
"""
|
||||
[Administre] choix pour le statut futur
|
||||
"""
|
||||
|
||||
CLDM = 'CLDM', 'CLDM'
|
||||
CP = 'CP', 'CP'
|
||||
DRJI = 'DRJI', 'DRJI'
|
||||
NRCT = 'NRCT', 'NRCT'
|
||||
DET = 'DET', 'DET'
|
||||
RECONV = 'RECONV', 'RECONV'
|
||||
|
||||
|
||||
class StatutPamChoices(models.TextChoices):
|
||||
"""
|
||||
[Administre] choix pour le statut PAM
|
||||
attributs supplémentaires :
|
||||
- calc_enabled : est-ce que ce statut permet le calcul ?
|
||||
- dec_enabled : est-ce que ce statut permet de créer une décision ?
|
||||
"""
|
||||
|
||||
# (valeur, calc_enabled, dec_enabled), libellé
|
||||
A_ETUDIER = ('A_ETUDIER', True, True), 'A étudier'
|
||||
A_ETUDIER_REC = ('A_ETUDIER_REC', True, True), 'A étudier REC'
|
||||
A_MAINTENIR = ('A_MAINTENIR', False, True), 'A maintenir'
|
||||
A_MUTER = ('A_MUTER', True, True), 'A muter'
|
||||
A_TRAITER = ('A_TRAITER', False, False), 'A traiter'
|
||||
NON_DISPONIBLE = ('NON_DISPONIBLE', False, False), 'Non disponible'
|
||||
NON_ETUDIE = ('NON_ETUDIE', False, False), 'Non étudié'
|
||||
PARTANT = ('PARTANT', False, False), 'Partant'
|
||||
|
||||
def __new__(cls, value):
|
||||
obj = str.__new__(cls, value[0])
|
||||
obj._value_ = value[0]
|
||||
obj.calc_enabled = value[1]
|
||||
obj.dec_enabled = value[2]
|
||||
return obj
|
||||
|
||||
|
||||
class Administre(models.Model):
|
||||
"""
|
||||
Modèle des administrés
|
||||
"""
|
||||
|
||||
class Cols():
|
||||
""" Constantes pour les noms de colonnes """
|
||||
|
||||
PK = 'a_id_sap'
|
||||
CATEGORIE = 'a_categorie'
|
||||
STATUT_CONCERTO = 'a_statut_concerto'
|
||||
STATUT_CONCERTO_FUTUR = 'a_statut_concerto_futur'
|
||||
DATE_STATUT_CONCERTO = 'a_date_statut_concerto'
|
||||
DATE_STATUT_CONCERTO_FUTUR = 'a_date_statut_concerto_futur'
|
||||
# relations many-to-many
|
||||
M2M_COMPETENCES = 'a_liste_id_competences'
|
||||
M2M_PAM = 'pam'
|
||||
# relations one-to-many
|
||||
O2M_FMOB = 'fmobs'
|
||||
# relations one-to-one ou many-to-one
|
||||
REL_DOMAINE = 'a_domaine'
|
||||
REL_FILIERE = 'a_filiere'
|
||||
REL_DECISION = 'decision'
|
||||
REL_FONCTION = 'fonction'
|
||||
REL_FORMATION_EMPLOI = 'formation_emploi'
|
||||
REL_GRADE = 'grade'
|
||||
REL_SOUS_VIVIER = 'sous_vivier'
|
||||
STATUT_PAM = 'a_statut_pam'
|
||||
REL_PAM_INTER = 'administre'
|
||||
|
||||
|
||||
objects = BulkUpdateOrCreateQuerySet.as_manager()
|
||||
|
||||
a_id_sap = models.IntegerField(primary_key=True)
|
||||
formation_emploi = models.ForeignKey(FormationEmploi, related_name="formation_emploi", on_delete=models.SET_NULL,
|
||||
null=True, blank=True)
|
||||
pam = models.ManyToManyField(PAM, through='Administres_Pams')
|
||||
fonction = models.ForeignKey(Fonction, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
sous_vivier = models.ForeignKey(SousVivier, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
grade = models.ForeignKey(Grade, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
a_grade_date_debut = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_liste_id_marques = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_liste_id_competences = models.ManyToManyField(Competence, blank=True)
|
||||
a_nom = models.CharField(max_length=100)
|
||||
a_prenom = models.CharField(max_length=100)
|
||||
a_sexe = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_id_def = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_eip = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_code_fonction = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_domaine = models.ForeignKey(Domaine, on_delete=models.SET_NULL, null=True, blank=True, db_constraint=False)
|
||||
a_filiere = models.ForeignKey(Filiere, on_delete=models.SET_NULL, null=True, blank=True, db_constraint=False)
|
||||
a_nf = models.CharField(max_length=100, null=True, blank=True, choices=NiveauFonctionnelChoices.choices)
|
||||
a_domaine_poste = models.ForeignKey(Domaine, related_name="domaine_poste", on_delete=models.SET_NULL, null=True, blank=True)
|
||||
a_filiere_poste = models.ForeignKey(Filiere, related_name="filiere_poste", on_delete=models.SET_NULL, null=True, blank=True)
|
||||
a_nf_poste = models.CharField(max_length=100, null=True, blank=True, choices=NiveauFonctionnelChoices.choices)
|
||||
a_categorie = models.CharField(max_length=5, null=True, blank=True)
|
||||
a_domaine_futur = models.ForeignKey(Domaine, related_name="domaine_futur", on_delete=models.SET_NULL, null=True, blank=True)
|
||||
a_filiere_futur = models.ForeignKey(Filiere, related_name="filiere_futur", on_delete=models.SET_NULL, null=True, blank=True)
|
||||
a_nf_futur = models.CharField(max_length=100, null=True, blank=True, choices=NiveauFonctionnelChoices.choices)
|
||||
a_domaine_gestion = models.CharField('Domaine de gestion (BVT)', max_length=100, null=True, blank=True)
|
||||
a_date_entree_service = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_arme = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_rg_origine_recrutement = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_naissance = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_diplome_hl = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_dernier_diplome = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_credo_fe = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_arrivee_fe = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_pos_statuaire = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_pos_statuaire = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_interruption_service = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_situation_fam = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_mariage = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_nombre_enfants = models.IntegerField(null=True, blank=True)
|
||||
a_enfants = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_rdc = models.DateField(null=True, blank=True)
|
||||
a_date_dernier_acr = models.DateField(null=True, blank=True)
|
||||
a_eis = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_sap_conjoint = models.IntegerField(null=True, blank=True)
|
||||
a_flag_particulier = models.IntegerField(null=True, blank=True)
|
||||
a_notes_partagees = models.TextField(null=True, blank=True)
|
||||
a_eip_fiche_detaille = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_eip_futur = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_liste_depts_souhaites = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_liste_zones_geographiques_shm = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_pls_gb_max = models.IntegerField(null=True, blank=True)
|
||||
a_marqueur_pn = models.BooleanField(default=False, null=True)
|
||||
a_fonction1 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction2 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction3 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction4 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction5 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction6 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction7 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction8 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_fonction9 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction1 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction2 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction3 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction4 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction5 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction6 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction7 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction8 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_date_fonction9 = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_profession_conjoint = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_id_def_conjoint = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_notes_gestionnaire = models.TextField(null=True, blank=True)
|
||||
a_statut_pam = models.CharField('statut PAM', max_length=100,choices=StatutPamChoices.choices, null=True, blank=True)
|
||||
a_sexe_conjoint = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_lien_service = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_age_en_annees = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_origine_recrutement = models.CharField(max_length=100, null=True, blank=True)
|
||||
statut_futur = models.CharField('statut futur', db_column='a_statut_futur', max_length=8, choices=StatutFuturChoices.choices, null=True, blank=True)
|
||||
date_statut_futur = models.DateField('date du statut futur', db_column='a_date_statut_futur', null=True, blank=True)
|
||||
a_statut_concerto = models.CharField('statut CONCERTO', max_length=1000, null=True, blank=True)
|
||||
a_date_statut_concerto = models.CharField('date du statut CONCERTO', max_length=32, null=True, blank=True)
|
||||
a_statut_concerto_futur = models.CharField('statut CONCERTO futur', max_length=100, null=True, blank=True)
|
||||
a_date_statut_concerto_futur = models.CharField('date du statut CONCERTO futur', max_length=32, null=True, blank=True)
|
||||
suivi_previsionnel_situation = models.CharField('suivi prévisionnel de la situation du militaire', max_length=100, choices=SuiviPrevisionnelMilitaire.choices, null=True, blank=True)
|
||||
date_suivi_previsionnel_situation = models.DateField('date du suivi prévisionnel de la situation du militaire', db_column='a_date_suivi_previsionnel_situation', null=True, blank=True)
|
||||
a_annee_previsible_mutation = models.PositiveIntegerField('année prévisible de mutation', null=True, blank=True)
|
||||
a_fud = models.CharField('FUD de départ', max_length=32, null=True, blank=True)
|
||||
a_date_fud = models.CharField('date du FUD', max_length=32, null=True, blank=True)
|
||||
a_ciat = models.BooleanField('CIAT', default=False, null=True)
|
||||
a_specifique = models.CharField('PPE / SHM / ITD', max_length=250, choices=SpecifiqueChoices.choices, null=True, blank=True)
|
||||
a_date_affectation = models.DateField("Date d'affectation", null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Administré"
|
||||
verbose_name_plural = "Administrés"
|
||||
constraints = [
|
||||
models.CheckConstraint(
|
||||
name='%(app_label)s_%(class)s_a_nf_valid',
|
||||
check=models.Q(a_nf__in=NiveauFonctionnelChoices.values)
|
||||
),
|
||||
models.CheckConstraint(
|
||||
name='%(app_label)s_%(class)s_a_nf_poste_valid',
|
||||
check=models.Q(a_nf_poste__in=NiveauFonctionnelChoices.values)
|
||||
),
|
||||
models.CheckConstraint(
|
||||
name='%(app_label)s_%(class)s_a_nf_futur_valid',
|
||||
check=models.Q(a_nf_futur__in=NiveauFonctionnelChoices.values)
|
||||
),
|
||||
models.CheckConstraint(
|
||||
name='%(app_label)s_%(class)s_statut_pam_valid',
|
||||
check=models.Q(a_statut_pam__in=StatutPamChoices.values)
|
||||
),
|
||||
models.CheckConstraint(
|
||||
name='%(app_label)s_%(class)s_statut_futur_valid',
|
||||
check=models.Q(statut_futur__in=StatutFuturChoices.values)
|
||||
),
|
||||
models.CheckConstraint(
|
||||
name='%(app_label)s_%(class)s_a_specifique',
|
||||
check=models.Q(a_specifique__in=SpecifiqueChoices.values)
|
||||
)
|
||||
]
|
||||
|
||||
class Administres_Pams(models.Model):
|
||||
class Cols():
|
||||
""" Constantes pour les noms de colonnes """
|
||||
|
||||
PK = 'id'
|
||||
REL_PAM = 'pam'
|
||||
REL_ADMINISTRE = 'administre'
|
||||
O2M_FMOB = 'fmobs'
|
||||
REL_DECISION = 'decision'
|
||||
STATUT_PAM = 'a_statut_pam_annee'
|
||||
|
||||
objects = BulkUpdateOrCreateQuerySet.as_manager()
|
||||
|
||||
id = models.CharField(primary_key=True, max_length=100)
|
||||
pam = models.ForeignKey(PAM, on_delete = models.CASCADE, related_name='pam')
|
||||
administre = models.ForeignKey(Administre, on_delete=models.CASCADE, related_name=Administre.Cols.REL_PAM_INTER)
|
||||
a_statut_pam_annee = models.CharField('statut PAM', max_length=100,choices=StatutPamChoices.choices, null=True, blank=True)
|
||||
notes_pam = models.TextField(null=True, blank=True)
|
||||
a_ciat_pam = models.BooleanField('CIAT', default=False, null=True)
|
||||
a_specifique_pam = models.CharField('PPE / SHM / ITD', max_length=250, choices=SpecifiqueChoices.choices, null=True, blank=True)
|
||||
a_liste_depts_souhaites_pam = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_liste_zones_geographiques_shm_pam = models.CharField(max_length=100, null=True, blank=True)
|
||||
a_situationfuture_notes_fe = models.TextField(null=True, blank=True)
|
||||
|
||||
|
||||
|
||||
|
||||
class Affectation(models.Model):
|
||||
"""
|
||||
Modèle pour les affectations
|
||||
"""
|
||||
administre = models.ForeignKey(Administre, on_delete=models.CASCADE, null=True, blank=True, related_name='adm_affec', db_constraint=False)
|
||||
affect_libelle = models.CharField(max_length=100, null=True, blank=True)
|
||||
affect_date = models.CharField(max_length=100, null=True, blank=True)
|
||||
|
||||
|
||||
class Diplome(models.Model):
|
||||
"""
|
||||
Modèle pour les diplomes
|
||||
"""
|
||||
|
||||
administre = models.ForeignKey(Administre, on_delete=models.CASCADE, null=True, blank=True, related_name='adm_dip', db_constraint=False)
|
||||
diplome_libelle = models.CharField(max_length=100, null=True, blank=True)
|
||||
diplome_date = models.CharField(max_length=100, null=True, blank=True)
|
||||
diplome_note = models.CharField(max_length=100, null=True, blank=True)
|
||||
diplome_niveau = models.CharField(max_length=100, null=True, blank=True)
|
||||
|
||||
|
||||
class FUD(models.Model):
|
||||
"""
|
||||
Modèle pour les formulaires unitaires de demandes
|
||||
"""
|
||||
|
||||
administre = models.ForeignKey(Administre, on_delete=models.CASCADE, null=True, blank=True, related_name='adm_fud', db_constraint=False)
|
||||
fud_libelle = models.CharField(max_length=100, null=True, blank=True)
|
||||
fud_date_debut = models.CharField(max_length=100, null=True, blank=True)
|
||||
fud_date_fin = models.CharField(max_length=100, null=True, blank=True)
|
||||
Reference in New Issue
Block a user