init
This commit is contained in:
17
backend-django/backend/serializers/__init__.py
Normal file
17
backend-django/backend/serializers/__init__.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from .administre import *
|
||||
from .alimentation import *
|
||||
from .commun import *
|
||||
from .current_user import *
|
||||
from .decision import *
|
||||
from .domaine import *
|
||||
from .exportation_fichiers import *
|
||||
from .filiere import *
|
||||
from .fmob import *
|
||||
from .fonction import *
|
||||
from .formation_emploi import *
|
||||
from .grade import *
|
||||
from .initial import *
|
||||
from .notation import *
|
||||
from .pcp_fe_groupe import *
|
||||
from .sous_vivier import *
|
||||
from .suppression import *
|
||||
41
backend-django/backend/serializers/administre.py
Normal file
41
backend-django/backend/serializers/administre.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from typing import Optional, Tuple
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
from ..models import (Administre, Decision, DecisionChoices, DecisionTree,
|
||||
FormationEmploi, Poste, FMOB, Administres_Pams)
|
||||
from ..utils.attributes import safe_rgetattr
|
||||
from ..utils.decisions import KEY_CREATE, KEY_UPDATE, get_available_decisions
|
||||
from ..utils.permissions import (KEY_READ, KEY_WRITE, Profiles,
|
||||
get_profiles_by_adm)
|
||||
from .commun import AssignmentState
|
||||
from .fmob import FmobSerializer
|
||||
from .fonction import FonctionSerializer
|
||||
from .formation_emploi import FormationEmploiSerializer
|
||||
from .grade import GradeSerializer
|
||||
from .sous_vivier import SousVivierSerializer
|
||||
|
||||
CTX_KEY_DECISIONS = 'decisions'
|
||||
CTX_KEY_PROFILES = 'profiles'
|
||||
|
||||
|
||||
class AdministreSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Cette classe sera responsable de la conversion des objets administres en type json contenant les champs de l'administré
|
||||
et les champs de fonction, formation_emploi, sous_vivier, decisions, grade et Fmob liés à chaque administré. Cette classe va également ordonner le json par a_id_sap.
|
||||
Les variables qui seront affichées dans le json sont celles mentionnées dans la variable fields.
|
||||
"""
|
||||
|
||||
|
||||
a_id_sap = serializers.ReadOnlyField()
|
||||
formation_emploi = FormationEmploiSerializer(read_only=True)
|
||||
sous_vivier = SousVivierSerializer(read_only=True)
|
||||
sous_vivier_id = serializers.IntegerField(write_only=True, allow_null=True)
|
||||
fonction = FonctionSerializer(read_only=True)
|
||||
grade = GradeSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Administre
|
||||
ordering = [Administre.Cols.PK]
|
||||
fields = '__all__'
|
||||
86
backend-django/backend/serializers/alimentation.py
Normal file
86
backend-django/backend/serializers/alimentation.py
Normal file
@@ -0,0 +1,86 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class FileSVSerializer(serializers.Serializer):
|
||||
"""Cette classe ne sera utilisée que pour valider si le fichier SV est un vrai fichier.
|
||||
"""
|
||||
SV = serializers.FileField()
|
||||
|
||||
class Meta:
|
||||
fields = ['sv_file']
|
||||
|
||||
|
||||
class ChargementCompetencesSerializer(serializers.Serializer):
|
||||
"""
|
||||
Cette classe ne sera utilisée que pour valider si les fichiers competence_v1 et competence_v2 sont un vrais fichier.
|
||||
"""
|
||||
ref_skills = serializers.FileField(label="Référentiel des compétences", help_text="Fichier 'Référenciel des compétences_corrigé v2.xlsx'", required = False)
|
||||
specific_skills = serializers.FileField(label="Compétences particulières", help_text="Fichier 'COMPETENCES PARTICULIERES.xlsx'", required = False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class AlimentationSerializer(serializers.Serializer):
|
||||
"""Cette classe ne sera utilisée que pour valider si les fichiers Donnees_BO_ADT, REO, Ref Gest, Ref Org, Ref Sv Fil, Ref FE, FMOB, domaine_filiere, insee_mapin et diplomes sont des vrais fichiers.
|
||||
"""
|
||||
|
||||
Donnees_BO_ADT = serializers.FileField(label="Données BO", help_text="Fichier 'Données BO_Anonymes.xlsx'", required=False)
|
||||
REO = serializers.FileField(label="REO", help_text="Fichier 'REO2022_OGURE_NG.xlsx'", required=False)
|
||||
REO_PAM_SUIVANT = serializers.FileField(label="REO A + 1",help_text="Fichier REO2023_OGURE_NG.xlsx", required=False)
|
||||
REO_OCV = serializers.FileField(label="Requêtes OCV", help_text="Fichier 'Copie requete ocv postes et mise à poste v2.xlsx'", required=False)
|
||||
referentiel_gestionnaire = serializers.FileField(label="Référentiel de gestionnaires", help_text="Fichier 'Référentiel gestionnaires DRHAT.xlsx'", required=False)
|
||||
referentiel_organique = serializers.FileField(label="Référentiel organique", help_text="Fichier 'Référentiel organique DRHAT.xlsx'", required=False)
|
||||
refeferentiel_sous_vivier_filiere = serializers.FileField(label="Référentiel de sous-viviers/filières", help_text="Fichier 'Référentiel sous-viviers filières_V3.xlsx'", required=False)
|
||||
referentiel_fe = serializers.FileField(label="Référentiel FE", help_text="Fichier 'Référentiel FE anonymisé_V2.xlsx'", required=False)
|
||||
FMOB = serializers.FileField(label="Formulaire de mobilité", help_text="Fichier 'FMOB_FEMP modifié.xlsx'", required=False)
|
||||
FMOB_PAM_SUIVANT = serializers.FileField(label="Formulaire de mobilité A + 1", help_text="Fichier 'FMOB PAM A1 (2023).xlsx", required=False)
|
||||
domaine_filiere = serializers.FileField(label="Domaines - filières", help_text="Fichier 'DOMAINES FILIERES DRHAT.xlsx'", required=False)
|
||||
insee_maping = serializers.FileField(label="INSEE", help_text="Fichier 'INSEE.xlsx'", required=False)
|
||||
diplomes = serializers.FileField(label="Diplômes", help_text="Fichier 'Diplomes 2021.xlsx'", required=False)
|
||||
FUD = serializers.FileField(label="FUD", help_text="Fichier 'FUD.xlsx'", required=False)
|
||||
ref_zones_geo = serializers.FileField(label="Référentiel des zones géographiques", help_text="Fichier 'Zones_Geographique.xlsx'", required=False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
|
||||
|
||||
class AlimentationReferentielSerializer(serializers.Serializer):
|
||||
""" Valide que les données sont bien des fichiers. """
|
||||
|
||||
referentiel_fe = serializers.FileField(label='Référentiel FE', help_text='Référentiel FE anonymisé_V2.xlsx')
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class AlimentationZoneGeographiqueSerializer(serializers.Serializer):
|
||||
""" Valide que les données sont bien des fichiers. """
|
||||
|
||||
ref_zones_geo = serializers.FileField(label="Référentiel des zones géographiques", help_text="Fichier 'Zones_Geographique.xlsx'", required=False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class AlimentationCommentairesSerializer(serializers.Serializer):
|
||||
""" Valide que les données sont bien des fichiers. """
|
||||
|
||||
commentaires = serializers.FileField(label='Commentaires', help_text='20220427_NP_DRHAT_SDG_BCCM_com-OGURE.xlsx', required=False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class AlimentationRefsDroitSerializer(serializers.Serializer):
|
||||
""" Valide que les données sont bien des fichiers. """
|
||||
|
||||
referentiel_gestionnaire = serializers.FileField(label="Référentiel de gestionnaires", help_text="Fichier 'Référentiel gestionnaires DRHAT.xlsx'", required=False)
|
||||
referentiel_organique = serializers.FileField(label="Référentiel organique", help_text="Fichier 'Référentiel organique DRHAT.xlsx'", required=False)
|
||||
refeferentiel_sous_vivier_filiere = serializers.FileField(label="Référentiel de sous-viviers/filières", help_text="Fichier 'Référentiel sous-viviers filières_V3.xlsx'", required=False)
|
||||
referentiel_fe = serializers.FileField(label="Référentiel FE", help_text="Fichier 'Référentiel FE anonymisé_V2.xlsx'", required=False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
29
backend-django/backend/serializers/commun.py
Normal file
29
backend-django/backend/serializers/commun.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from enum import Enum
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class AssignmentState(str, Enum):
|
||||
""" état d'affectation BMOB (lié au changement de BMOB) """
|
||||
|
||||
# reste dans la même FE
|
||||
RESTANT = 'RESTANT'
|
||||
|
||||
# entre dans une FE du périmètre du PCP
|
||||
ENTRANT = 'ENTRANT'
|
||||
|
||||
# sort d'une FE du périmètre du PCP
|
||||
SORTANT = 'SORTANT'
|
||||
|
||||
# ENTRANT + SORTANT (mais pas RESTANT car ce n'est pas la même FE)
|
||||
ENTRANT_SORTANT = 'ENTRANT_SORTANT'
|
||||
|
||||
def __repr__(self):
|
||||
return "%s.%s" % (self.__class__.__name__, self._name_)
|
||||
|
||||
|
||||
class ChoicesSerializer(serializers.Serializer):
|
||||
""" Représente un élément qui hérite de Choices sous forme {code, libelle} """
|
||||
|
||||
code = serializers.ReadOnlyField(source='value')
|
||||
libelle = serializers.ReadOnlyField(source='label')
|
||||
72
backend-django/backend/serializers/current_user.py
Normal file
72
backend-django/backend/serializers/current_user.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import CustomUser, SousVivier, FormationEmploi
|
||||
from ..utils.permissions import KEY_READ, KEY_WRITE
|
||||
from .pcp_fe_groupe import PcpFeGroupeSerializer
|
||||
|
||||
CTX_KEY_SOUS_VIVIERS_SUPER = 'sous_viviers_super'
|
||||
CTX_KEY_SOUS_VIVIERS = 'sous_viviers'
|
||||
CTX_KEY_FORMATION_EMPLOIS = 'formation_emplois'
|
||||
CTX_KEY_PCP_FE_GROUPE = 'fe_groupe'
|
||||
CTX_KEY_PROFILES = 'profiles'
|
||||
|
||||
|
||||
class _SousVivierUserSerializer(serializers.ModelSerializer):
|
||||
""" Classe de représentation d'un sous-vivier de l'utilisateur """
|
||||
|
||||
class Meta:
|
||||
model = SousVivier
|
||||
exclude = ('gestionnaires',)
|
||||
|
||||
def to_representation(self, instance):
|
||||
res = super().to_representation(instance)
|
||||
ids_super = self.context.get(CTX_KEY_SOUS_VIVIERS_SUPER)
|
||||
if ids_super and instance.pk in ids_super:
|
||||
res['admin'] = True
|
||||
return res
|
||||
|
||||
|
||||
class _FormationEmploiUserSerializer(serializers.ModelSerializer):
|
||||
""" Classe de représentation d'un sous-vivier de l'utilisateur """
|
||||
|
||||
class Meta:
|
||||
model = FormationEmploi
|
||||
fields = [FormationEmploi.Cols.PK, FormationEmploi.Cols.LIBELLE, 'fe_mere_credo', 'fe_mere_la', 'gestionnaire_id']
|
||||
|
||||
gestionnaire_id = serializers.ReadOnlyField()
|
||||
|
||||
def to_representation(self, instance):
|
||||
res = super().to_representation(instance)
|
||||
return res
|
||||
|
||||
|
||||
class UserInfoSerializer(serializers.ModelSerializer):
|
||||
""" Gère la forme publique de l'utilisateur connecté. """
|
||||
|
||||
class Meta:
|
||||
model = CustomUser
|
||||
fields = ['id', 'username', 'first_name', 'last_name', 'email', 'grade', 'administre']
|
||||
|
||||
administre = serializers.ReadOnlyField(source='administre_id')
|
||||
|
||||
def to_representation(self, instance):
|
||||
res = super().to_representation(instance)
|
||||
|
||||
svs_super = self.context.get(CTX_KEY_SOUS_VIVIERS_SUPER) or ()
|
||||
svs = self.context.get(CTX_KEY_SOUS_VIVIERS) or ()
|
||||
fes = self.context.get(CTX_KEY_FORMATION_EMPLOIS) or ()
|
||||
all_svs = set(list(svs) + list(svs_super))
|
||||
all_fes = set(list(fes))
|
||||
svs_ids_specific_super = {sv.pk for sv in svs_super if sv not in svs}
|
||||
|
||||
res['sous_viviers'] = _SousVivierUserSerializer(all_svs, many=True, context={
|
||||
CTX_KEY_SOUS_VIVIERS_SUPER: svs_ids_specific_super
|
||||
}).data
|
||||
|
||||
res['formation_emplois'] = _FormationEmploiUserSerializer(all_fes, many=True).data
|
||||
|
||||
res['fe_groupe'] = PcpFeGroupeSerializer(self.context.get(CTX_KEY_PCP_FE_GROUPE) or ()).data
|
||||
|
||||
profiles = self.context.get(CTX_KEY_PROFILES) or {}
|
||||
res['profils'] = {'lecture': profiles.get(KEY_READ) or (), 'ecriture': profiles.get(KEY_WRITE) or ()}
|
||||
return res
|
||||
35
backend-django/backend/serializers/decision.py
Normal file
35
backend-django/backend/serializers/decision.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import Decision, DecisionChoices
|
||||
from .administre import AdministreSerializer
|
||||
from .initial import PosteSerializer
|
||||
from .notation import NotationSerializer
|
||||
|
||||
|
||||
class DecisionSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets decisions en type json contenant les champs de decision
|
||||
et les champs de notation, poste et administre liés à chaque decision . Cette classe va également ordonner le json par de_date_decision.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
notation = NotationSerializer()
|
||||
# poste = PosteSerializer()
|
||||
# administre = AdministreSerializer()
|
||||
de_date_decision = serializers.ReadOnlyField()
|
||||
|
||||
class Meta:
|
||||
model = Decision
|
||||
fields = '__all__'
|
||||
ordering = ['de_date_decision']
|
||||
|
||||
|
||||
class CreateDecisionSerializer(serializers.ModelSerializer):
|
||||
""" Valide les données pour une création de décision """
|
||||
|
||||
administre_id = serializers.IntegerField(write_only=True)
|
||||
poste_id = serializers.CharField(max_length=100, write_only=True)
|
||||
de_decision = serializers.ChoiceField(choices=DecisionChoices.choices)
|
||||
delete_former = serializers.BooleanField(write_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Decision
|
||||
fields = ['administre_id', 'poste_id', 'de_decision', 'delete_former']
|
||||
12
backend-django/backend/serializers/domaine.py
Normal file
12
backend-django/backend/serializers/domaine.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models.domaine import Domaine
|
||||
|
||||
|
||||
class DomaineSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets domaines en type json contenant les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = Domaine
|
||||
fields = '__all__'
|
||||
11
backend-django/backend/serializers/exportation_fichiers.py
Normal file
11
backend-django/backend/serializers/exportation_fichiers.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from tabnanny import verbose
|
||||
from rest_framework import serializers
|
||||
|
||||
class ExportationSerializer(serializers.Serializer):
|
||||
"""Cette classe ne sera utilisée que pour valider si les fichiers Donnees_BO_ADT, REO, Ref Gest, Ref Org, Ref Sv Fil, Ref FE, FMOB, domaine_filiere, insee_mapin et diplomes sont des vrais fichiers.
|
||||
"""
|
||||
FICHIERS_CHOICES = (("1", "Données BO"), ("2", "REO"),)
|
||||
fichier_exporte = serializers.ChoiceField(label='Fichier à exporter', help_text='Selectionnez le fichier que vous souhaitez exporter', choices=FICHIERS_CHOICES)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
16
backend-django/backend/serializers/filiere.py
Normal file
16
backend-django/backend/serializers/filiere.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models.filiere import Filiere
|
||||
from .domaine import DomaineSerializer
|
||||
|
||||
|
||||
class FiliereSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets filières en type json contenant les informations de filière
|
||||
et les champs du domaine liés à chaque filiere.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
domaine = DomaineSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Filiere
|
||||
fields = '__all__'
|
||||
12
backend-django/backend/serializers/fmob.py
Normal file
12
backend-django/backend/serializers/fmob.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import FMOB
|
||||
|
||||
|
||||
class FmobSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets Fmob en type json contenant uniquement les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = FMOB
|
||||
fields = '__all__'
|
||||
12
backend-django/backend/serializers/fonction.py
Normal file
12
backend-django/backend/serializers/fonction.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import Fonction
|
||||
|
||||
|
||||
class FonctionSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets fonctions en type json contenant les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = Fonction
|
||||
fields = '__all__'
|
||||
25
backend-django/backend/serializers/formation_emploi.py
Normal file
25
backend-django/backend/serializers/formation_emploi.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from rest_framework import serializers
|
||||
from ..models import FormationEmploi, Garnison
|
||||
|
||||
|
||||
class FormationEmploiSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets FormationEmploi en type json contenant les informations de FormationEmploi
|
||||
et le champs garnison lieu liés à chaque FormationEmploi.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
|
||||
class MereSerializer(serializers.ModelSerializer):
|
||||
"""Classe de représentation de la FE mère"""
|
||||
fe_code = serializers.ReadOnlyField()
|
||||
fe_libelle = serializers.ReadOnlyField()
|
||||
|
||||
class Meta:
|
||||
model = FormationEmploi
|
||||
fields = ['fe_code', 'fe_libelle']
|
||||
|
||||
|
||||
mere = MereSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = FormationEmploi
|
||||
exclude = ('gestionnaires',)
|
||||
12
backend-django/backend/serializers/grade.py
Normal file
12
backend-django/backend/serializers/grade.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import Grade
|
||||
|
||||
|
||||
class GradeSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets grades en type json contenant les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = Grade
|
||||
fields = '__all__'
|
||||
259
backend-django/backend/serializers/initial.py
Normal file
259
backend-django/backend/serializers/initial.py
Normal file
@@ -0,0 +1,259 @@
|
||||
"""Ce fichier contient des fonctions qui permettent de convertir des données complexes,
|
||||
telles que des querysets et des instances de modèle, en types de données Python qui peuvent ensuite
|
||||
être facilement rendus en JSON, XML ou d'autres types de contenu.
|
||||
"""
|
||||
|
||||
from rest_framework import serializers
|
||||
from typing import Optional, Tuple
|
||||
|
||||
|
||||
from .. import constants
|
||||
from ..models import (Competence, Decision, Garnison, Marque, MarquesGroupe,
|
||||
Poste, PAM, Administres_Pams, FormationEmploi, Postes_Pams,
|
||||
DecisionChoices, DecisionTree, FMOB)
|
||||
|
||||
from .commun import AssignmentState
|
||||
from ..utils.attributes import safe_rgetattr
|
||||
from ..utils.decisions import KEY_CREATE, KEY_UPDATE, get_available_decisions
|
||||
from ..utils.permissions import (KEY_READ, KEY_WRITE, Profiles,
|
||||
get_profiles_by_adm)
|
||||
from .commun import ChoicesSerializer
|
||||
from .filiere import FiliereSerializer
|
||||
from .fonction import FonctionSerializer
|
||||
from .formation_emploi import FormationEmploiSerializer
|
||||
from .sous_vivier import SousVivierSerializer
|
||||
from .fmob import FmobSerializer
|
||||
from .administre import AdministreSerializer
|
||||
|
||||
|
||||
CTX_KEY_DECISIONS = 'decisions'
|
||||
CTX_KEY_PROFILES = 'profiles'
|
||||
|
||||
|
||||
class ScoringValidator(serializers.Serializer):
|
||||
""" pour interprêter et valider le contenu JSON """
|
||||
sous_vivier_id = serializers.CharField(max_length=100, required=True, allow_null=False, allow_blank=False)
|
||||
pam_id = serializers.CharField(max_length=100, required=True, allow_null=False, allow_blank=False)
|
||||
|
||||
class ScoringSelectifValidator(serializers.Serializer):
|
||||
""" pour interprêter et valider le contenu JSON """
|
||||
sous_vivier_id = serializers.CharField(max_length=100, required=True, allow_null=False, allow_blank=False)
|
||||
administre_id = serializers.ListField()
|
||||
poste_id = serializers.ListField()
|
||||
pam_id = serializers.CharField(max_length=100)
|
||||
|
||||
|
||||
class SimpleDecisionPosteSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets decision en type json contenant uniquement les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
grade = serializers.ReadOnlyField(source='administre.grade.gr_code')
|
||||
nom = serializers.ReadOnlyField(source='administre.a_nom')
|
||||
prenom = serializers.ReadOnlyField(source='administre.a_prenom')
|
||||
|
||||
class Meta:
|
||||
model = Decision
|
||||
fields = '__all__'
|
||||
|
||||
class AdministresPamsSerializer(serializers.ModelSerializer):
|
||||
|
||||
class DecisionLocalSerializer(serializers.ModelSerializer):
|
||||
"""Classe de représentation locale d'une décision"""
|
||||
|
||||
class PosteLocalSerializer(serializers.Serializer):
|
||||
"""Classe de représentation locale d'un poste"""
|
||||
|
||||
class FormationEmploiLocalSerializer(FormationEmploiSerializer):
|
||||
"""Classe de représentation locale d'une FE"""
|
||||
|
||||
class Meta:
|
||||
model = FormationEmploi
|
||||
fields = ['fe_code', 'fe_libelle', 'fe_mere_credo', 'fe_mere_la', 'fe_garnison_lieu', 'mere']
|
||||
|
||||
p_id = serializers.ReadOnlyField()
|
||||
formation_emploi = FormationEmploiLocalSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Poste
|
||||
fields = '__all__'
|
||||
|
||||
poste = PosteLocalSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Decision
|
||||
fields = '__all__'
|
||||
|
||||
administre = AdministreSerializer()
|
||||
pam_id = serializers.ReadOnlyField(source='pam.pam_id')
|
||||
pam_date = serializers.ReadOnlyField(source='pam.pam_date')
|
||||
pam_libelle = serializers.ReadOnlyField(source='pam.pam_libelle')
|
||||
pam_statut = serializers.ReadOnlyField(source='pam.pam_statut')
|
||||
fmobs = FmobSerializer()
|
||||
decision = DecisionLocalSerializer()
|
||||
profils = serializers.SerializerMethodField()
|
||||
decisions_possibles = serializers.SerializerMethodField()
|
||||
etat_fe_bmob = serializers.SerializerMethodField()
|
||||
|
||||
def get_decisions_possibles(self, obj: Administres_Pams) -> Tuple[DecisionChoices]:
|
||||
decisions_by_adm = self.context.get(CTX_KEY_DECISIONS) or get_available_decisions((obj,), user=self.context['request'].user)
|
||||
decisions = decisions_by_adm.get(obj.id) or {}
|
||||
return {'creation': decisions.get(KEY_CREATE) or (), 'maj': decisions.get(KEY_UPDATE) or ()}
|
||||
|
||||
def get_profils(self, obj: Administres_Pams) -> Tuple[Profiles]:
|
||||
profiles_by_adm = self.context.get(CTX_KEY_PROFILES) or get_profiles_by_adm(self.context['request'].user, obj)
|
||||
profiles = profiles_by_adm.get(obj.id) or {}
|
||||
return {'lecture': profiles.get(KEY_READ) or (), 'ecriture': profiles.get(KEY_WRITE) or ()}
|
||||
|
||||
def get_etat_fe_bmob(self, obj: Administres_Pams) -> Optional[AssignmentState]:
|
||||
decision = safe_rgetattr(obj, f'{Administres_Pams.Cols.REL_DECISION}.{Decision.Cols.STATUT}')
|
||||
if not decision or DecisionTree.ME not in DecisionChoices(decision).trees:
|
||||
return None
|
||||
|
||||
profiles_by_adm = self.context.get(CTX_KEY_PROFILES) or get_profiles_by_adm(self.context['request'].user, obj)
|
||||
profiles = (profiles_by_adm.get(obj.id) or {}).get(KEY_READ) or ()
|
||||
if Profiles.PCP in profiles:
|
||||
return AssignmentState.RESTANT
|
||||
|
||||
current = Profiles.PCP_ACTUEL in profiles
|
||||
future = Profiles.PCP_FUTUR in profiles
|
||||
if current and future:
|
||||
return AssignmentState.ENTRANT_SORTANT
|
||||
if current:
|
||||
return AssignmentState.SORTANT
|
||||
if future:
|
||||
return AssignmentState.ENTRANT
|
||||
return None
|
||||
|
||||
def to_representation(self, instance):
|
||||
ret = super().to_representation(instance)
|
||||
|
||||
ret.update(ret.pop('administre'))
|
||||
ret['a_statut_pam'] = ret.pop('a_statut_pam_annee')
|
||||
|
||||
if 'fmobs' in ret and ret['fmobs']:
|
||||
ret['fmobs'] = [ret['fmobs']]
|
||||
|
||||
return ret
|
||||
class Meta:
|
||||
model = Administres_Pams
|
||||
fields = '__all__'
|
||||
|
||||
class PAMSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets decision en type json contenant uniquement les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = PAM
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class MarquesGroupeSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets marquegroupes en type json contenant uniquement les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = MarquesGroupe
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class MarqueSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets marque en type json contenant les informations de marque et les champs de marquesgroupe liés à chaque marque.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
groupe_marques = MarquesGroupeSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Marque
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class GarnisonSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets garnisons en type json contenant les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = Garnison
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class SousVivierAssociationSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la creation d'un json contenant les champs du SousVivier
|
||||
et les champs de filière liés à chaque SousVivier.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
filiere = FiliereSerializer()
|
||||
sous_vivier = SousVivierSerializer()
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
class CompetenceSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets competences en type json contenant les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = Competence
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class PosteSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets postes en type json contenant les champs du poste
|
||||
et les champs de fonction, formation_emploi, sous_vivier et decisions liés à chaque poste. Cette classe va également ordonner le json par p_id et valider certaines variables.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
p_id = serializers.ReadOnlyField()
|
||||
fonction = FonctionSerializer()
|
||||
formation_emploi = FormationEmploiSerializer()
|
||||
sous_viviers = SousVivierSerializer(many=True)
|
||||
p_nb_prepositionne = serializers.IntegerField(read_only=True)
|
||||
p_nb_positionne = serializers.IntegerField(read_only=True)
|
||||
p_nb_omi_en_cours = serializers.IntegerField(read_only=True)
|
||||
p_nb_omi_active = serializers.IntegerField(read_only=True)
|
||||
p_poids_competences = serializers.IntegerField(read_only=True)
|
||||
p_poids_filiere = serializers.IntegerField(read_only=True)
|
||||
p_poids_nf = serializers.IntegerField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Poste
|
||||
ordering = ['p_id']
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class PostesPamsSerializer(serializers.ModelSerializer):
|
||||
|
||||
pam_id = serializers.ReadOnlyField(source='p_pam.pam_id')
|
||||
pam_date = serializers.ReadOnlyField(source='p_pam.pam_date')
|
||||
pam_libelle = serializers.ReadOnlyField(source='p_pam.pam_libelle')
|
||||
pam_statut = serializers.ReadOnlyField(source='p_pam.pam_statut')
|
||||
decisions = SimpleDecisionPosteSerializer()
|
||||
poste = PosteSerializer()
|
||||
|
||||
|
||||
def to_representation(self, instance):
|
||||
ret = super().to_representation(instance)
|
||||
ret.update(ret.pop('poste'))
|
||||
|
||||
if ret['decisions']:
|
||||
ret['decisions'] = [ret['decisions']]
|
||||
else :
|
||||
ret['decisions'] = []
|
||||
|
||||
|
||||
|
||||
return ret
|
||||
|
||||
class Meta:
|
||||
model = Postes_Pams
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
|
||||
class RefStatutPamChoicesSerializer(ChoicesSerializer):
|
||||
""" Représente un élément StatutPamChoices dans les données de référence """
|
||||
|
||||
inclusAlgo = serializers.ReadOnlyField(source='calc_enabled')
|
||||
affectationManuellePossible = serializers.ReadOnlyField(source='dec_enabled')
|
||||
|
||||
|
||||
class RefAvisPosteChoicesSerializer(RefStatutPamChoicesSerializer):
|
||||
""" Représente un élément AvisPosteChoices dans les données de référence """
|
||||
11
backend-django/backend/serializers/notation.py
Normal file
11
backend-django/backend/serializers/notation.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from rest_framework import serializers
|
||||
from ..models import Notation
|
||||
|
||||
|
||||
class NotationSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets Notation en type json contenant uniquement les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = Notation
|
||||
fields = '__all__'
|
||||
12
backend-django/backend/serializers/pcp_fe_groupe.py
Normal file
12
backend-django/backend/serializers/pcp_fe_groupe.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import PcpFeGroupe
|
||||
|
||||
|
||||
class PcpFeGroupeSerializer(serializers.ModelSerializer):
|
||||
"""Cette classe sera responsable de la conversion des objets PcpFeGroupe en type json contenant les informations mentionnées dans la variable fields.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
class Meta:
|
||||
model = PcpFeGroupe
|
||||
fields = '__all__'
|
||||
15
backend-django/backend/serializers/sous_vivier.py
Normal file
15
backend-django/backend/serializers/sous_vivier.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..models import SousVivier
|
||||
|
||||
|
||||
class SousVivierSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Cette classe sera responsable de la conversion des objets SousVivier en type json contenant les informations du SousVivier
|
||||
et la/le gestionnaire responsable de chaque SousVivier.
|
||||
Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = SousVivier
|
||||
exclude = (SousVivier.Cols.M2M_GESTIONNAIRES,)
|
||||
9
backend-django/backend/serializers/suppression.py
Normal file
9
backend-django/backend/serializers/suppression.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
class SuppressionAdministresSerializer(serializers.Serializer):
|
||||
""" Valide que les données sont bien des fichiers. """
|
||||
|
||||
administres = serializers.FileField(label='Administrés à supprimer', help_text="Fichier 'Militaires à supprimer d\'OGURE.xlsx'", required=False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
Reference in New Issue
Block a user