76 lines
3.1 KiB
Python
76 lines
3.1 KiB
Python
from django.test import TestCase
|
|
from django.urls import reverse
|
|
from rest_framework import status
|
|
import pandas as pd
|
|
from rest_framework.test import APIClient, APITestCase
|
|
from ...utils_extraction import to_table_pam
|
|
|
|
from ...models import (Administre, CustomUser, Decision, DecisionChoices,
|
|
Domaine, Filiere, FormationEmploi, Garnison, Poste,
|
|
RefGest, RefOrg, RefSvFil, SousVivier, Administres_Pams, Postes_Pams, PAM)
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
class PamTestCase(TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.date = datetime.date(2023,1,1)
|
|
cls.pam_2022 = PAM.objects.create(pam_id='2022',pam_date=datetime.date(2022,7,15), pam_libelle= "PAM de l'année 2022", pam_statut='PAM en cours')
|
|
cls.pam_2023 = PAM.objects.create(pam_id='2023',pam_date=datetime.date(2022,7,15), pam_libelle= "PAM de l'année 2023", pam_statut='PAM A+1')
|
|
|
|
|
|
def test_extraction_pam(self):
|
|
"""
|
|
Construit la table PAM qui servira à récuperer l'année du PAM et piloter l'affichage des données en fonction du bon pam pour chaque tables
|
|
Cloture le PAM en le sauvegardant dans un fichier excel
|
|
"""
|
|
annee_pam = str(self.date.year)
|
|
annee_pam_suivant = str(self.date.year + 1)
|
|
|
|
pam=pd.DataFrame(columns = ['pam_id','pam_date', 'pam_libelle','pam_statut'])
|
|
pam_id = annee_pam
|
|
pam_id_suivant = annee_pam_suivant
|
|
pam_libelle = f"PAM de l'année {annee_pam}"
|
|
pam_libelle_suivant = f"PAM de l'année {annee_pam_suivant}"
|
|
pam_date = self.date
|
|
pam_date_suivant = pam_date
|
|
pam_statut = "PAM en cours"
|
|
pam_statut_suivant = "PAM A+1"
|
|
|
|
sorg_id = "SORG"
|
|
sorg_libelle = "SORG"
|
|
sorg_statut = "SORG"
|
|
|
|
pam['pam_id'] = [pam_id,pam_id_suivant, sorg_id]
|
|
pam['pam_date'] = [pam_date,pam_date_suivant, pam_date]
|
|
pam['pam_libelle'] = [pam_libelle,pam_libelle_suivant,sorg_libelle]
|
|
pam['pam_statut'] = [pam_statut,pam_statut_suivant,sorg_statut]
|
|
|
|
return pam
|
|
|
|
|
|
def test_insertion_pam(self):
|
|
self.liste_create = []
|
|
self.liste_update = []
|
|
self.update_header = ['pam_date','pam_libelle','pam_statut']
|
|
self.df = self.test_extraction_pam()
|
|
for i in range(self.df.shape[0]):
|
|
self.pams = PAM.objects.filter(pam_id=self.df.at[i,'pam_id'])
|
|
self.pam = PAM(pam_id=self.df.at[i, 'pam_id'],pam_date=self.df.at[i, 'pam_date'], pam_libelle=self.df.at[i, 'pam_libelle'],
|
|
pam_statut=self.df.at[i, 'pam_statut'])
|
|
|
|
if self.pam.pam_id in self.pams.values_list('pam_id', flat = True):
|
|
self.liste_update.append(self.pam)
|
|
else:
|
|
cloture=PAM.objects.filter(pam_statut="PAM en cours")
|
|
cloture.update(pam_statut ="PAM clôturé")
|
|
self.liste_create.append(self.pam)
|
|
|
|
if self.liste_create:
|
|
PAM.objects.bulk_create(self.liste_create)
|
|
if self.liste_update:
|
|
PAM.objects.bulk_update(self.liste_update, fields=self.update_header)
|