232 lines
10 KiB
Python
232 lines
10 KiB
Python
"""
|
|
Ce dossier contient tous les modèles de la base de données d'OGURE
|
|
"""
|
|
from bulk_update_or_create import BulkUpdateOrCreateQuerySet
|
|
from django.db import models
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from .administre import Administre, Administres_Pams
|
|
from .commun import NiveauFonctionnelChoices, SpecifiqueChoices
|
|
from .competence import Competence
|
|
from .domaine import Domaine
|
|
from .filiere import Filiere
|
|
from .garnison import Garnison
|
|
from .grade import Grade
|
|
from .poste import Poste, Postes_Pams
|
|
from .sous_vivier import SousVivier
|
|
from .pam import PAM
|
|
|
|
"""
|
|
Script de création des diffferentes tables de la base
|
|
OGURE NG utilisation de l'ORM de Django pour réaliser cette étape
|
|
|
|
"""
|
|
|
|
# TODO: supprimer ce modèle et le remplacer par le nouveau modèle des Sous-viviers
|
|
# Modèle de l'association des sous-viviers à la catégorie et la filière
|
|
class SousVivierAssociation(models.Model):
|
|
"""Modèle de l'association des sous-viviers à la catégorie et la filière
|
|
"""
|
|
CATEGORIE_CHOICES = [('MDR', 'MDR'), ('SOFF', 'SOFF'), ('OFF', 'OFF'), ('OGX', 'OGX')]
|
|
|
|
sva_id = models.IntegerField(primary_key=True)
|
|
sous_vivier = models.ForeignKey(SousVivier, on_delete=models.SET_NULL, null=True, blank=True)
|
|
filiere = models.ForeignKey(Filiere, on_delete=models.SET_NULL, null=True, blank=True)
|
|
sva_categorie = models.CharField(max_length=5, choices=CATEGORIE_CHOICES)
|
|
sva_arme = models.CharField(max_length=20, null=True, blank=True)
|
|
|
|
|
|
# Modèle des Groupes de marques
|
|
class MarquesGroupe(models.Model):
|
|
"""Modèle des Groupes de marques
|
|
"""
|
|
gm_id = models.IntegerField(primary_key=True)
|
|
gm_type = models.CharField(max_length=100)
|
|
gm_code = models.CharField(max_length=100)
|
|
gm_libelle = models.CharField(max_length=100)
|
|
gm_ordre = models.IntegerField(null=True, blank=True)
|
|
gm_selection_multiple = models.BooleanField(null=True, blank=True)
|
|
|
|
def as_dict(self):
|
|
return {
|
|
"id": self.gm_id,
|
|
"type": self.gm_type,
|
|
"code": self.gm_code,
|
|
"libelle": self.gm_libelle,
|
|
"selectionMultiple": self.gm_selection_multiple,
|
|
"ordre": self.gm_ordre
|
|
}
|
|
|
|
|
|
# Modèle des Marques
|
|
class Marque(models.Model):
|
|
"""Modèle des Marques
|
|
"""
|
|
mar_id = models.TextField(primary_key=True)
|
|
groupe_marques = models.ForeignKey(MarquesGroupe, on_delete=models.CASCADE)
|
|
mar_code = models.CharField(max_length=100)
|
|
mar_libelle = models.CharField(max_length=100)
|
|
mar_ordre = models.IntegerField(null=True, blank=True)
|
|
|
|
def as_dict(self):
|
|
return {
|
|
"id": self.mar_id,
|
|
"groupeMarquesId": self.groupe_marques_id,
|
|
"code": self.mar_code,
|
|
"libelle": self.mar_libelle,
|
|
"ordre": self.mar_ordre
|
|
}
|
|
|
|
|
|
class ZoneGeographique(models.Model):
|
|
"""Modèle des Zones Geographiques
|
|
"""
|
|
zone_id = models.CharField(max_length=100, primary_key=True)
|
|
zone_libelle = models.CharField(max_length=100)
|
|
|
|
def as_dict(self):
|
|
return {
|
|
"id": self.zone_id,
|
|
"libelle": self.zone_libelle
|
|
}
|
|
|
|
|
|
# Modèle Liste de Préference
|
|
class PreferencesListe(models.Model):
|
|
"""Modèle Liste de Préference
|
|
"""
|
|
lp_id = models.IntegerField(primary_key=True)
|
|
administre_pam = models.ForeignKey(Administres_Pams, on_delete=models.CASCADE, related_name= 'administre_pam_pref', default="")
|
|
administre = models.ForeignKey(Administre, on_delete=models.CASCADE, related_name= 'administre_pref', default="")
|
|
pam = models.ForeignKey(PAM, on_delete=models.CASCADE, default="")
|
|
poste = models.ForeignKey(Poste, on_delete=models.CASCADE)
|
|
lp_rang_poste = models.IntegerField()
|
|
|
|
|
|
|
|
|
|
# Modèle pour les notations
|
|
class Notation(models.Model):
|
|
"""Modèle pour les notations
|
|
"""
|
|
no_id = models.AutoField(primary_key=True)
|
|
administre = models.ForeignKey(Administre, on_delete=models.CASCADE)
|
|
poste = models.ForeignKey(Poste, on_delete=models.CASCADE)
|
|
administre_pam = models.ForeignKey(Administres_Pams, on_delete=models.CASCADE, default="", related_name='administre_pam')
|
|
poste_pam = models.ForeignKey(Postes_Pams, on_delete=models.CASCADE, default="", related_name='poste_pam')
|
|
pam = models.ForeignKey(PAM, on_delete=models.SET_NULL, null=True, blank=True)
|
|
no_rang_administre = models.IntegerField(null=True, blank=True)
|
|
no_rang_poste = models.IntegerField(null=True, blank=True)
|
|
no_date_execution = models.DateTimeField(auto_now=True)
|
|
no_score_administre = models.FloatField(null=True, blank=True)
|
|
no_score_poste = models.FloatField(null=True, blank=True)
|
|
no_flag_cple_ideal = models.BooleanField(default=False)
|
|
|
|
|
|
class Administre_Notation(models.Model):
|
|
"""Modèle le lien entre Notation et Administre
|
|
"""
|
|
id = models.CharField(max_length=100, primary_key=True)
|
|
administre = models.ForeignKey(Administre, on_delete=models.CASCADE, null=True, blank=True, related_name='adm_not', db_constraint=False)
|
|
no_annne_de_notation = models.CharField(max_length=100, null=True, blank=True)
|
|
no_nr_ou_iris = models.CharField(max_length=100, null=True, blank=True)
|
|
no_rac_ou_iris_cumule = models.CharField(max_length=100, null=True, blank=True)
|
|
no_rf_qsr = models.CharField(max_length=100, null=True, blank=True)
|
|
no_aptitude_emploie_sup = models.CharField(max_length=100, null=True, blank=True)
|
|
no_potentiel_responsabilite_sup = models.CharField(max_length=100, null=True, blank=True)
|
|
no_age_annees = models.CharField(max_length=100, null=True, blank=True)
|
|
|
|
|
|
# Modèle du référentiel organique
|
|
class RefOrg(models.Model):
|
|
"""Modèle de référentiel organique"""
|
|
|
|
class Cols():
|
|
""" Constantes pour les noms de colonnes """
|
|
|
|
PK = 'ref_org_code'
|
|
# relations one-to-one ou many-to-one
|
|
REL_REF_GEST = 'ref_gest'
|
|
|
|
# TODO: ajouter la condition d'unicité des lignes (utiliser class Meta)
|
|
ref_org_code = models.CharField('Code niveau d\'org', max_length=100, primary_key=True)
|
|
ref_org_code_niv_org1 = models.CharField('Code niveau d\'org 1', max_length=100, null=True, blank=True)
|
|
ref_org_lib_niv_org1 = models.CharField('Livelle niveau d\'org 1', max_length=100, null=True, blank=True)
|
|
ref_org_code_niv_org2 = models.CharField('Code niveau d\'org 2', max_length=100, null=True, blank=True)
|
|
ref_org_lib_niv_org2 = models.CharField('Libelle niveau d\'org 2', max_length=100, null=True, blank=True)
|
|
ref_org_code_niv_org3 = models.CharField('Code niveau d\'org 3', max_length=100, null=True, blank=True)
|
|
ref_org_lib_niv_org3 = models.CharField('Libelle niveau d\'org 3', max_length=100, null=True, blank=True)
|
|
ref_org_code_niv_org4 = models.CharField('Code niveau d\'org 4', max_length=100, null=True, blank=True)
|
|
ref_org_lib_niv_org4 = models.CharField('Libell niveau d\'org 4', max_length=100, null=True, blank=True)
|
|
ref_org_niv_org = models.IntegerField('Niveau d\'org', null=True, blank=True)
|
|
ref_org_ref_fe = models.BooleanField('Pameur BMOB', default=False, null=True)
|
|
ref_org_ref_sv_fil = models.BooleanField('Gestionnaire BGCAT', default=False, null=True)
|
|
ref_org_droit_lect = models.BooleanField('Droit de lecture', default=False, null=True)
|
|
ref_org_droit_ecr = models.BooleanField("Droit d'écriture", default=False, null=True)
|
|
ref_org_expert_hme = models.BooleanField('Expert HME', default=False, null=True)
|
|
ref_org_bvt = models.BooleanField('Gestionnaire BVT', default=False, null=True)
|
|
ref_org_itd = models.BooleanField('Gestionnaire ITD', default=False, null=True)
|
|
|
|
class Meta:
|
|
verbose_name = 'Référentiel organique'
|
|
verbose_name_plural = 'Référentiels organiques'
|
|
|
|
|
|
# Modèle du référentiel gestionnaire
|
|
class RefGest(models.Model):
|
|
"""Modèle de référentiel gestionnaire"""
|
|
|
|
class Cols():
|
|
""" Constantes pour les noms de colonnes """
|
|
|
|
PK = 'ref_gest_sap'
|
|
# relations one-to-one ou many-to-one
|
|
REL_ORG = 'ref_gest_org'
|
|
|
|
ref_gest_sap = models.IntegerField('Id SAP', primary_key=True)
|
|
ref_gest_username = models.CharField('Nom d\'utilisateur', max_length=100, null=True, blank=True)
|
|
ref_gest_email = models.CharField('Adresse mail', max_length=100, null=True, blank=True)
|
|
ref_gest_first_name = models.CharField('Prénom', max_length=100, null=True, blank=True)
|
|
ref_gest_last_name = models.CharField('Nom', max_length=100, null=True, blank=True)
|
|
ref_gest_grade = models.CharField('Grade', max_length=100, null=True, blank=True)
|
|
ref_gest_niv_org = models.CharField('Niveau d\'org', max_length=100, null=True, blank=True)
|
|
ref_gest_org = models.ForeignKey(RefOrg, verbose_name='Référentiel organique', related_name=RefOrg.Cols.REL_REF_GEST, on_delete=models.CASCADE,
|
|
db_column='ref_gest_org_id', null=True, blank=True)
|
|
|
|
class Meta:
|
|
verbose_name = 'Référentiel gestionnaire'
|
|
verbose_name_plural = 'Référentiels gestionnaires'
|
|
|
|
|
|
# Modèle du référentiel sous-vivier filière
|
|
class RefSvFil(models.Model):
|
|
"""Modèle de référentiel sous-vivier filière
|
|
"""
|
|
|
|
class Cols():
|
|
""" Constantes pour les noms de colonnes """
|
|
|
|
# relations one-to-one ou many-to-one
|
|
REL_SOUS_VIVIER = 'sous_vivier'
|
|
|
|
|
|
ref_sv_fil_code = models.CharField('Code niveau d\'org', max_length=100, null=True, blank=True)
|
|
ref_sv_fil_dom_gest = models.CharField('Domaine de gestion', max_length=100, null=True, blank=True)
|
|
ref_sv_fil_dom = models.CharField('Domaine', max_length=100, null=True, blank=True)
|
|
ref_sv_fil_fil = models.CharField('Filière', max_length=100, null=True, blank=True)
|
|
ref_sv_fil_cat = models.CharField('Catégorie', max_length=100, null=True, blank=True)
|
|
sous_vivier = models.ForeignKey(SousVivier, verbose_name='Sous-vivier', on_delete=models.SET_NULL, null=True, blank=True)
|
|
|
|
def as_dict(self):
|
|
return {
|
|
"ref_sv_fil_code": self.ref_sv_fil_code,
|
|
"ref_sv_fil_dom_gest": self.ref_sv_fil_dom_gest,
|
|
"ref_sv_fil_dom": self.ref_sv_fil_dom,
|
|
"ref_sv_fil_fil": self.ref_sv_fil_fil,
|
|
"ref_sv_fil_cat": self.ref_sv_fil_cat,
|
|
}
|
|
|
|
class Meta:
|
|
verbose_name = 'Référentiel sous-vivier/filière'
|
|
verbose_name_plural = 'Référentiels sous-viviers/filières'
|