init
This commit is contained in:
192
backend-django/backend/utils_calcul.py
Normal file
192
backend-django/backend/utils_calcul.py
Normal file
@@ -0,0 +1,192 @@
|
||||
"""
|
||||
Ce module contient la fonction permettant de démarrer le scoring sur le sous-vivier désiré
|
||||
"""
|
||||
|
||||
import time
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
from .models import Calcul
|
||||
from .models import StatutCalculChoices as StatutCalcul
|
||||
from .utils.logging import get_logger
|
||||
from .utils_extraction import to_table_liste_preference, to_table_liste_preference_selectif
|
||||
from .utils_insertion import (insert_liste_preference, insert_matching,
|
||||
insert_Notation)
|
||||
from .utils_matching import (matching_parfait, preprocess_matching,
|
||||
preprocess_matchingSelectif)
|
||||
from .utils_scoring import notations, notations_liste
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
# Fonction de lancement du scoring
|
||||
def lancer_calculs(pam_id,sv_id):
|
||||
"""
|
||||
Fonction de lancement du calcul du scoring
|
||||
|
||||
:param sv_id: L'id de sous vivier étudié
|
||||
:type sv_id: char
|
||||
"""
|
||||
Statut = StatutCalcul
|
||||
statut = Statut.TERMINE
|
||||
pourcentage_incr = 16.67
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id),pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
start_time = time.time()
|
||||
logger.info('---------------------Scoring beginning------------------------')
|
||||
notations_list = notations(pam_id,sv_id)
|
||||
logger.info('---------------------Scoring ending---------------------------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id),pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Scoring time -- %d seconds -----------------", time.time() - start_time)
|
||||
start_time_insert = time.time()
|
||||
logger.info('---------------------insert scoring results begining-----------')
|
||||
insert_Notation(notations_list,pam_id,sv_id)
|
||||
logger.info('---------------------insert scoring results ending-----------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id),pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Insert time -- %d seconds -----------------", time.time() - start_time_insert)
|
||||
|
||||
start_time2 = time.time()
|
||||
logger.info('---------------------Preference list creation beginning-----------------')
|
||||
df_preference = to_table_liste_preference(pam_id,sv_id)
|
||||
|
||||
logger.info('---------------------Preference list creation ending-------------------')
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id),pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
try:
|
||||
|
||||
|
||||
start_time3 = time.time()
|
||||
logger.info('---------------------Matching beginning------------------------')
|
||||
proposant, disposant, capacite = preprocess_matching(pam_id, sv_id, df_preference)
|
||||
results = matching_parfait(proposant, disposant, capacite)
|
||||
logger.info('---------------------Matching ending---------------------------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id),pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Matching time -- %d seconds -----------------", time.time() - start_time3)
|
||||
start_time_insert = time.time()
|
||||
logger.info('---------------------insert matching results begining-----------')
|
||||
insert_matching(results, pam_id)
|
||||
logger.info('---------------------insert matching results ending-----------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id),pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage = 100
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Insert time -- %d seconds -----------------", time.time() - start_time_insert)
|
||||
except Exception as e:
|
||||
logger.warning('Arret du scoring, veuillez renseigner au moins un département',e)
|
||||
|
||||
|
||||
|
||||
# Fonction de lancement du scoring sélectif
|
||||
def lancer_calculSelectif(sv_id, pam_id, l_a_id, l_p_id):
|
||||
"""
|
||||
Fonction de lancement du calcul du scoring sélectif
|
||||
|
||||
:param sv_id: L'id de sous vivier étudié
|
||||
:param l_a_id: Liste d'ids d'administrés
|
||||
:param l_p_id: Liste d'ids de postes
|
||||
:type sv_id: char
|
||||
"""
|
||||
Statut = StatutCalcul
|
||||
pourcentage_incr = 16.67
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id)+'selectif',pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
start_time = time.time()
|
||||
logger.info('---------------------Scoring beginning------------------------')
|
||||
notations_list = notations_liste(sv_id, pam_id, l_a_id, l_p_id)
|
||||
logger.info('---------------------Scoring ending---------------------------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id)+'selectif',pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Scoring time -- %d seconds -----------------", time.time() - start_time)
|
||||
start_time_insert = time.time()
|
||||
logger.info('---------------------insert scoring results begining-----------')
|
||||
insert_Notation(notations_list, pam_id, sv_id)
|
||||
logger.info('---------------------insert scoring results ending-----------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id)+'selectif',pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Insert time -- %d seconds -----------------", time.time() - start_time_insert)
|
||||
|
||||
start_time2 = time.time()
|
||||
logger.info('---------------------Preference list creation beginning-----------------')
|
||||
df_preference = to_table_liste_preference_selectif(sv_id, pam_id,l_a_id,l_p_id)
|
||||
|
||||
logger.info('---------------------Preference list creation ending-------------------')
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id)+'selectif',pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
try:
|
||||
|
||||
|
||||
start_time3 = time.time()
|
||||
logger.info('---------------------Matching beginning------------------------')
|
||||
proposant, disposant, capacite = preprocess_matchingSelectif(sv_id, pam_id,l_a_id,l_p_id, df_preference)
|
||||
results = matching_parfait(proposant, disposant, capacite)
|
||||
logger.info('---------------------Matching ending---------------------------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id)+'selectif',pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage += pourcentage_incr
|
||||
calcul.ca_statut_pourcentage = round(calcul.ca_statut_pourcentage, 2)
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Matching time -- %d seconds -----------------", time.time() - start_time3)
|
||||
start_time_insert = time.time()
|
||||
logger.info('---------------------insert matching results begining-----------')
|
||||
insert_matching(results, pam_id)
|
||||
logger.info('---------------------insert matching results ending-----------')
|
||||
|
||||
calcul = Calcul.objects.get(id=str(sv_id)+str(pam_id)+'selectif',pam_id=pam_id,sous_vivier_id=sv_id)
|
||||
calcul.ca_statut_pourcentage = 100
|
||||
calcul.save()
|
||||
if calcul.ca_statut == Statut.EN_ATTENTE_ARRET:
|
||||
raise Exception('Arret du calcul')
|
||||
|
||||
logger.info("------------------Insert time -- %d seconds -----------------", time.time() - start_time_insert)
|
||||
except Exception as e:
|
||||
logger.warning('Arret du scoring, veuillez renseigner au moins un département',e)
|
||||
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user