31/05/2026 - 17h00

Signed-off-by: Cherif <cbalde@mysy-training.com>
master_Elyos_FI
Cherif 2026-05-31 16:44:09 +02:00
parent f13e7e2dea
commit 518966d471
6 changed files with 3776 additions and 19 deletions

View File

@ -4,16 +4,13 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="28/05/2026 - 22h00">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="30/05/2026 - 21h00">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Inscription_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/Inscription_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/base_class_calcul_note.py" beforeDir="false" afterPath="$PROJECT_DIR$/base_class_calcul_note.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Session_Formation_Sequence.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation_Sequence.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/class_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/class_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/email_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/email_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/note_evaluation_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/note_evaluation_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_invoice.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_invoice.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/unite_enseignement_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/unite_enseignement_mgt.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -457,7 +454,7 @@
<option name="project" value="LOCAL" />
<updated>1747251650255</updated>
</task>
<option name="localTasksCounter" value="593" />
<option name="localTasksCounter" value="594" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -499,7 +496,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="27/04/26 - 19h" />
<MESSAGE value="28/04/26 - 19h" />
<MESSAGE value="29/04/26 - 21h" />
<MESSAGE value="04/05/2026 - 13h" />
@ -524,6 +520,7 @@
<MESSAGE value="27/05/2026 - 18h00" />
<MESSAGE value="27/05/2026 - 22h00" />
<MESSAGE value="28/05/2026 - 22h00" />
<option name="LAST_COMMIT_MESSAGE" value="28/05/2026 - 22h00" />
<MESSAGE value="30/05/2026 - 21h00" />
<option name="LAST_COMMIT_MESSAGE" value="30/05/2026 - 21h00" />
</component>
</project>

View File

@ -13,6 +13,7 @@ from email.mime.text import MIMEText
import ast
import pymongo
from dateutil.relativedelta import relativedelta
from fontTools.misc.plistlib import end_date
from pymongo import MongoClient
import json
from bson import ObjectId
@ -19855,7 +19856,7 @@ def Get_Inscrit_By_Invoice_Status_For_List_Session(diction):
return False, " L'identifiant de la session :" + str(session_id) + " est invalide "
tab_session_id.append(session_id)
tab_session_id.append(session_id)
filt_invoice_status = {}
if ("invoice_status" in diction.keys()):
@ -19938,3 +19939,416 @@ def Get_Inscrit_By_Invoice_Status_For_List_Session(diction):
return False, " Impossible de récupérer la liste des inscrits facturés "
"""
Ce fonction permet de recuperer la liste de toutes les séquences qui concerne un inscrit.
Alogo :
1 - Pour une session donnée, recuprer la liste tous les groupes d'inscrit qui concerne cet inscrit
2 - Recuprer la liste des séquences auxquelles ces groupes sont rattaché
"""
def Get_Inscrit_List_Sequence_Formation_For_Given_Session(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'session_id', 'tab_inscrit_ids']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé ")
return False, " Les informations fournies sont incorrectes",
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'session_id', 'tab_inscrit_ids']
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ")
return False, " Les informations fournies sont incorrectes",
"""
Verification de l'identité et autorisation de l'entité qui
appelle cette API
"""
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
# Verifier la validité de la session
if (MYSY_GV.dbname['session_formation'].count_documents({'_id': ObjectId(str(diction['session_id'])),
'valide': '1',
'partner_owner_recid': str(
my_partner['recid'])}) != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La session_id :" + str(diction['session_id']) + " est invalide ")
return False, " L'identifiant de la session :" + str(diction['session_id']) + " est invalide "
tab_inscrit_ids = []
tab_inscrit_ids_work = str(diction['tab_inscrit_ids']).split(',')
for inscrit_id in tab_inscrit_ids_work:
if (inscrit_id):
if (MYSY_GV.dbname['inscription'].count_documents({'_id': ObjectId(str(inscrit_id)),
'valide': '1',
'partner_owner_recid': str(
my_partner['recid'])}) != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'inscription " + str(inscrit_id) + " est invalide ")
return False, " L'inscription " + str(inscrit_id) + " est invalide "
tab_inscrit_ids.append(str(inscrit_id))
tab_groupe_inscription_id = list(
MYSY_GV.dbname["groupe_inscription_membre"].distinct(
"groupe_inscription_id",
{
"inscription_id": {'$in':tab_inscrit_ids},
"partner_owner_recid": str(my_partner["recid"]),
"valide": "1",
"locked": "0"
}
)
)
tab_groupe_inscription_id_ObjectId = []
for tmp in tab_groupe_inscription_id :
if( tmp ):
tab_groupe_inscription_id_ObjectId.append(ObjectId(str(tmp)))
RetObject = []
val_tmp = 0
query = {}
query['tab_grp_apprenant_ids._id'] = {'$in':tab_groupe_inscription_id_ObjectId}
query['partner_owner_recid'] = str(my_partner["recid"])
query['valide'] = "1"
query['locked'] = "0"
for retval in MYSY_GV.dbname['session_formation_sequence'].find(query).sort("sequence_start", 1):
#print(" retval === ", retval)
user = {}
user['id'] = str(val_tmp)
user['_id'] = str(retval['_id'])
val_tmp = val_tmp + 1
user['session_id'] = retval['session_id']
user['type'] = retval['type']
user['sequence_title'] = retval['sequence_title']
user['sequence_start'] = retval['sequence_start']
user['sequence_end'] = retval['sequence_end']
user['time_in_hour'] = retval['time_in_hour']
user['volume_theorique'] = retval['volume_theorique']
user['domaine_competence_id'] = retval['domaine_competence_id']
domaine_competence_id_code = ""
if( retval['domaine_competence_id'] ):
bc_data = MYSY_GV.dbname['domaine_competence_pedagogique'].find_one({'_id':ObjectId(str( retval['domaine_competence_id'])),
'partner_owner_recid': str(my_partner['recid'])}, {'code':1})
if( bc_data and 'code' in bc_data.keys() ):
domaine_competence_id_code = bc_data['code']
user['domaine_competence_id_code'] = str(domaine_competence_id_code)
user['obligatoire'] = retval['obligatoire']
user['tab_grp_apprenant_ids_id'] = str(retval['tab_grp_apprenant_ids']['_id'])
user['tab_grp_apprenant_ids_code'] = str(retval['tab_grp_apprenant_ids']['code'])
RetObject.append(mycommon.JSONEncoder().encode(user))
return True, RetObject
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récupérer la liste des séquences de formation "
"""
Cette fonction créer les absence d'un inscrit avec une plage de date pour
pour une séquence donnée
Besoin :
pour une plage assez long, le système va aller chercher les sequences qui concerne
l'inscrit et créer des absences pour ces séquences
"""
def Create_Inscrit_Absence_By_Plage_Of_Date_OR_Sequence_Id(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'session_id', 'tab_inscrit_ids', 'start_date', 'end_date', 'sequence_id', 'justified']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé ")
return False, " Les informations fournies sont incorrectes",
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'session_id', 'tab_inscrit_ids', 'start_date', 'end_date', 'sequence_id']
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ")
return False, " Les informations fournies sont incorrectes",
"""
Important : On prend soit la sequence, soit une plage de date, pas les deux
"""
if( ( len(diction['start_date']) > 0 or len(diction['end_date']) > 0) and len(diction['sequence_id']) > 0 ):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " Les données fournies sont incohérente. Vous devez fournir soit une plage de dates, ou une séquence ")
return False, " Les données fournies sont incohérente. Vous devez fournir soit une plage de dates, ou une séquence ",
option_absence = ""
if( len(diction['sequence_id']) > 0 ):
option_absence = "sequence_id"
elif ( len(diction['start_date']) > 0 and len(diction['end_date']) > 0 ):
option_absence = "plage"
"""
Verification de l'identité et autorisation de l'entité qui
appelle cette API
"""
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
# Verifier qu'il n'y a pas de chevauchement de date avec une autre sequence de la meme session.
date_debut_seq = ""
if ("start_date" in diction.keys()):
if diction['start_date']:
date_debut_seq = str(diction['start_date'])
local_status = mycommon.CheckisDate_Hours(date_debut_seq)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " La date de debut de séquence " + str(
date_debut_seq) + " n'est pas au format 'jj/mm/aaaa hh:mm' ")
return False, " La date de debut de séquence " + str(
date_debut_seq) + " n'est pas au format 'jj/mm/aaaa hh:mm'"
date_fin_seq = ""
if ("end_date" in diction.keys()):
if diction['end_date']:
date_fin_seq = str(diction['end_date'])
local_status = mycommon.CheckisDate_Hours(date_fin_seq)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " La date de fin de séquence " + str(
date_fin_seq) + " n'est pas au format 'jj/mm/aaaa hh:mm' ")
return False, " La date de fin de séquence " + str(
date_fin_seq) + " n'est pas au format 'jj/mm/aaaa hh:mm'"
if (date_debut_seq and date_fin_seq and
datetime.strptime(str(date_debut_seq), '%d/%m/%Y %H:%M') >= datetime.strptime(str(date_fin_seq),
'%d/%m/%Y %H:%M')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " La date de fin de séquence " + str(
date_fin_seq) + " doit être postérieure à la date de début de séquence " + str(
date_debut_seq) + " ")
return False, " La date de fin de séquence " + str(
date_fin_seq) + " doit être postérieure à la date de début de séquence " + str(date_debut_seq) + " "
# Verifier la validité de la session
if (MYSY_GV.dbname['session_formation'].count_documents({'_id': ObjectId(str(diction['session_id'])),
'valide': '1',
'partner_owner_recid': str(
my_partner['recid'])}) != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La session_id :" + str(diction['session_id']) + " est invalide ")
return False, " L'identifiant de la session :" + str(diction['session_id']) + " est invalide "
tab_inscrit_ids = []
tab_inscrit_ids_work = str(diction['tab_inscrit_ids']).split(',')
for inscrit_id in tab_inscrit_ids_work:
if (inscrit_id):
if (MYSY_GV.dbname['inscription'].count_documents({'_id': ObjectId(str(inscrit_id)),
'valide': '1',
'partner_owner_recid': str(
my_partner['recid'])}) != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'inscription " + str(inscrit_id) + " est invalide ")
return False, " L'inscription " + str(inscrit_id) + " est invalide "
tab_inscrit_ids.append(str(inscrit_id))
tab_groupe_inscription_id = list(
MYSY_GV.dbname["groupe_inscription_membre"].distinct(
"groupe_inscription_id",
{
"inscription_id": {'$in':tab_inscrit_ids},
"partner_owner_recid": str(my_partner["recid"]),
"valide": "1",
"locked": "0"
}
)
)
tab_groupe_inscription_id_ObjectId = []
for tmp in tab_groupe_inscription_id :
if( tmp ):
tab_groupe_inscription_id_ObjectId.append(ObjectId(str(tmp)))
print(" ## tab_groupe_inscription_id = ",tab_groupe_inscription_id)
print(" ## option_absence = ", option_absence)
cpt = 0
for inscrit in tab_inscrit_ids :
inscrit_data = MYSY_GV.dbname['inscription'].find_one({'_id': ObjectId(str(inscrit)),
'valide': '1',
'partner_owner_recid': str(
my_partner['recid'])}, {'_id':1, 'email':1})
query = ""
if( option_absence == "sequence_id"):
query = [{
"$match": {
"session_id": str(diction['session_id']),
"partner_owner_recid": str(my_partner["recid"]),
"valide": "1",
"locked": "0",
"_id":ObjectId(str(diction['sequence_id']))
}
}]
elif ( option_absence == "plage"):
query = [
{
"$match": {
"session_id": str(diction['session_id']),
"partner_owner_recid": str(my_partner["recid"]),
"valide": "1",
"locked": "0",
"tab_grp_apprenant_ids._id": {'$in':tab_groupe_inscription_id_ObjectId}
}
},
{
"$addFields": {
"sequence_start_date": {
"$dateFromString": {
"dateString": "$sequence_start",
"format": "%d/%m/%Y %H:%M"
}
},
"sequence_end_date": {
"$dateFromString": {
"dateString": "$sequence_end",
"format": "%d/%m/%Y %H:%M"
}
}
}
},
{
"$match": {
"sequence_start_date": {
"$gt": datetime.strptime(date_debut_seq, "%d/%m/%Y %H:%M")
},
"sequence_end_date": {
"$lt": datetime.strptime(date_fin_seq, "%d/%m/%Y %H:%M")
}
}
},
{
"$sort": {
"sequence_start_date": 1
}
},
{
"$project": {
"_id": 1,
"session_id": 1,
"type": 1,
"sequence_title": 1,
"sequence_start": 1,
"sequence_end": 1,
"sequence_start_date": 1,
"sequence_end_date": 1,
"time_in_hour": 1,
"domaine_competence_id": 1,
"ue_id": 1,
"tab_grp_apprenant_ids": 1
}
}
]
#print(" QRYYY = ",query)
for retval in MYSY_GV.dbname["session_formation_sequence"].aggregate(query) :
#print(' CREATION ABSENCE SUR ', retval)
absence_data_to_add = {}
absence_data_to_add['related_collection'] = "apprenant"
absence_data_to_add['related_collection_email'] = inscrit_data['email']
absence_data_to_add['event_title'] = "Abs : "+str(retval['sequence_title'])
start_date = datetime.strptime(str(retval['sequence_start']), "%d/%m/%Y %H:%M")
absence_data_to_add['event_start'] = start_date.strftime("%Y-%m-%dT%H:%M:%S")
end_date = datetime.strptime(str(retval['sequence_end']), "%d/%m/%Y %H:%M")
absence_data_to_add['event_end'] = end_date.strftime("%Y-%m-%dT%H:%M:%S")
absence_data_to_add['domaine_competence_id'] = str(retval['domaine_competence_id'])
absence_data_to_add['ue_id'] = str(retval['ue_id'])
absence_data_to_add['time_in_hour'] = str(retval['time_in_hour'])
absence_data_to_add['session_id'] = str(retval['session_id'])
absence_data_to_add['event_type'] = "absence"
if("justified" in diction.keys() and diction['justified'] == "1"):
absence_data_to_add['justified'] = "true"
else:
absence_data_to_add['justified'] = "false"
absence_data_to_add['partner_owner_recid'] = str(my_partner['recid'])
absence_data_to_add['valide'] = "1"
absence_data_to_add['locked'] = "0"
#print(" absence_data_to_add = ", absence_data_to_add)
insert = MYSY_GV.dbname['agenda'].insert_one(absence_data_to_add)
cpt = cpt +1
return True, str(cpt) +" absence (s) créée(s)"
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de créer la ou les absences "

File diff suppressed because it is too large Load Diff

View File

@ -406,7 +406,7 @@ def Add_Session_Sequence_Return_New_Seq_Data(diction):
"""
field_list = ['token', 'session_id', 'sequence_title', 'sequence_start', 'sequence_end', 'agenda', 'objectif',
'commentaire', 'check_chevauchement', 'grp_apprenant_id', 'ue_id', 'type', 'ue_planif_line_id',
'mode_animation', 'volume_theorique', 'tab_grp_apprenant_ids', 'obligatoire']
'mode_animation', 'volume_theorique', 'tab_grp_apprenant_ids', 'obligatoire', 'domaine_competence_id']
incom_keys = diction.keys()
for val in incom_keys:
@ -463,6 +463,22 @@ def Add_Session_Sequence_Return_New_Seq_Data(diction):
str(inspect.stack()[0][3]) + " Le volume horaire est incorrecte ")
return False, " Le volume horaire est incorrecte"
"""
Valididé du domaine de compétence
"""
if ("domaine_competence_id" in diction.keys() and diction['domaine_competence_id']):
is_existe_domaine_competence_id = MYSY_GV.dbname["domaine_competence_pedagogique"].count_documents(
{'_id': ObjectId(str(diction['domaine_competence_id'])),
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0'})
if (is_existe_domaine_competence_id != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - L'identifiant du domaine de compétence est invalide ")
return False, " L'identifiant du domaine de compétence est invalide "
tab_grp_apprenant_ids = []
tab_grp_apprenant_ids_Object = []
if ("tab_grp_apprenant_ids" in diction.keys() and diction['tab_grp_apprenant_ids']):
@ -629,6 +645,10 @@ def Add_Session_Sequence_Return_New_Seq_Data(diction):
if ("commentaire" in diction.keys()):
commentaire = str(diction['commentaire'])
domaine_competence_id = ""
if ("domaine_competence_id" in diction.keys()):
domaine_competence_id = str(diction['domaine_competence_id'])
grp_apprenant_id = ""
if ("grp_apprenant_id" in diction.keys() and diction['grp_apprenant_id']):
grp_apprenant_id = str(diction['grp_apprenant_id'])
@ -708,6 +728,8 @@ def Add_Session_Sequence_Return_New_Seq_Data(diction):
my_data['obligatoire'] = obligatoire
my_data['domaine_competence_id'] = domaine_competence_id
my_data['mode_animation'] = mode_animation
my_data['grp_apprenant_id'] = grp_apprenant_id
@ -3638,7 +3660,16 @@ def Get_List_Sequence_Ressource_Affectation(diction):
'valide':'1', 'locked':"0"})
if(affectation_target_data is not None):
related_target_collection_id_nom = affectation_target_data["nom"] +" "+affectation_target_data["prenom"]
local_nom = ""
local_prenom = ""
if( "nom" in affectation_target_data.keys() ):
local_nom = affectation_target_data['nom']
if ("prenom" in affectation_target_data.keys()):
local_prenom = affectation_target_data['prenom']
related_target_collection_id_nom = local_nom +" "+local_prenom
related_target_collection_object = "Ressource Humaine"
elif ( retval["related_target_collection"] == "ressource_materielle") :
@ -3653,8 +3684,6 @@ def Get_List_Sequence_Ressource_Affectation(diction):
related_target_collection_object = "Ressource Materielle"
user['related_target_collection_id_nom'] = related_target_collection_id_nom
user['related_target_collection_object'] = related_target_collection_object
@ -3732,7 +3761,16 @@ def Get_List_note_evaluation_Ressource_Affectation(diction):
'valide':'1', 'locked':"0"})
if(affectation_target_data is not None):
related_target_collection_id_nom = affectation_target_data["nom"] +" "+affectation_target_data["prenom"]
local_nom = ""
local_prenom = ""
if ("nom" in affectation_target_data.keys()):
local_nom = affectation_target_data['nom']
if ("prenom" in affectation_target_data.keys()):
local_prenom = affectation_target_data['prenom']
related_target_collection_id_nom = local_nom +" "+local_prenom
related_target_collection_object = "Ressource Humaine"
elif ( retval["related_target_collection"] == "ressource_materielle") :

View File

@ -61,7 +61,7 @@ def add_class(diction):
'class_level', 'methode_pedagogique', 'condition_handicape', 'suivi_eval', 'class_id',
'version', 'categorie', 'recyclage_delai', 'recyclage_periodicite', 'recyclage_alert',
'contenu_attestation', 'note_finale_calculation_rule_id', 'referentiel_padagogique_id',
'published_catalog_prive', 'is_ftion_initiale', 'inscription_direct']
'published_catalog_prive', 'is_ftion_initiale', 'inscription_direct', 'duration_operationnelle']
incom_keys = diction.keys()
for val in incom_keys:
@ -522,6 +522,13 @@ def add_class(diction):
duration = float(str(diction['duration']))
mydata['duration'] = duration
duration_operationnelle = 1
if ("duration" in diction.keys()):
if diction['duration_operationnelle']:
duration_operationnelle = float(str(diction['duration_operationnelle']))
mydata['duration_operationnelle'] = duration_operationnelle
if ("plus_produit" in diction.keys()):
if diction['plus_produit']:
mydata['plus_produit'] = diction['plus_produit']
@ -856,7 +863,7 @@ def update_class(diction):
'condition_handicape', 'suivi_eval', 'class_id', 'version', 'categorie', 'recyclage_delai',
'recyclage_periodicite', 'recyclage_alert', 'contenu_attestation',
'note_finale_calculation_rule_id', 'referentiel_padagogique_id', 'published_catalog_prive',
'is_ftion_initiale', 'inscription_direct']
'is_ftion_initiale', 'inscription_direct', 'duration_operationnelle']
incom_keys = diction.keys()
for val in incom_keys:
@ -1212,6 +1219,9 @@ def update_class(diction):
if ("url" in diction.keys()):
mydata['url'] = diction['url']
if ("duration_operationnelle" in diction.keys()):
mydata['duration_operationnelle'] = mycommon.tryFloat(str(diction['duration_operationnelle']))
if ("duration" in diction.keys()):
mydata['duration'] = mycommon.tryFloat(str(diction['duration']))
@ -4104,6 +4114,9 @@ def get_partner_class(diction):
if ("is_ftion_initiale" not in retVal.keys()):
retVal['is_ftion_initiale'] = "0"
if ("duration_operationnelle" not in retVal.keys()):
retVal['duration_operationnelle'] = ""
if ("duration" not in retVal.keys()):
retVal['duration'] = ""
@ -4421,6 +4434,9 @@ def get_partner_class_Without_Scope_Action(diction):
if ("categorie" not in retVal.keys()):
retVal['categorie'] = ""
if ("duration_operationnelle" not in retVal.keys()):
retVal['duration_operationnelle'] = ""
if ("duration" not in retVal.keys()):
retVal['duration'] = ""
@ -4742,6 +4758,9 @@ def find_partner_class_like(diction):
if ("domain" not in retVal.keys()):
retVal['domain'] = ""
if ("duration_operationnelle" not in retVal.keys()):
retVal['duration_operationnelle'] = ""
if ("duration" not in retVal.keys()):
retVal['duration'] = ""
@ -7822,13 +7841,13 @@ def Export_Class_To_Excel_From_from_List_Id(diction):
outputFilename = str(MYSY_GV.TEMPORARY_DIRECTORY) + "/" + str(orig_file_name)
tab_exported_fields_header = ["external_code", "certif", "cpf", "title", "description", "objectif", "domaine", "metier", "categorie",
"duration", "duration_unit", "institut_formation", "mots_cle",
"duration", "duration_unit", "duration_operationnelle", "institut_formation", "mots_cle",
"note", "plus_produit", "pourqui", "prerequis", "price", "programme", "published", "support",
"formateur_nom", "formateur_prenom" , "contenu_attestation", "liste_modules"]
tab_exported_fields = ["external_code", "certif", "cpf", "title", "description", "objectif", "domaine", "metier", "categorie",
"duration", "duration_unit", "institut_formation", "mots_cle",
"duration", "duration_unit", "duration_operationnelle", "institut_formation", "mots_cle",
"note", "plus_produit", "pourqui", "prerequis", "price", "programme", "published", "support",
"formateur_nom", "formateur_prenom" , "contenu_attestation", "liste_modules"]

25
main.py
View File

@ -12908,6 +12908,31 @@ def Get_Inscrit_By_Invoice_Status_For_List_Session():
return jsonify(status=status, message=retval)
"""
API permet de recuperer la liste de toutes les séquences qui concerne un inscrit.
"""
@app.route('/myclass/api/Get_Inscrit_List_Sequence_Formation_For_Given_Session/', methods=['POST','GET'])
@crossdomain(origin='*')
def Get_Inscrit_List_Sequence_Formation_For_Given_Session():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Get_Inscrit_List_Sequence_Formation_For_Given_Session payload = ",payload)
status, retval = inscription.Get_Inscrit_List_Sequence_Formation_For_Given_Session(payload)
return jsonify(status=status, message=retval)
"""
API permet créer les absence d'un inscrit avec une plage de date pour
pour une séquence donnée.
"""
@app.route('/myclass/api/Create_Inscrit_Absence_By_Plage_Of_Date_OR_Sequence_Id/', methods=['POST','GET'])
@crossdomain(origin='*')
def Create_Inscrit_Absence_By_Plage_Of_Date_OR_Sequence_Id():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Create_Inscrit_Absence_By_Plage_Of_Date_OR_Sequence_Id payload = ",payload)
status, retval = inscription.Create_Inscrit_Absence_By_Plage_Of_Date_OR_Sequence_Id(payload)
return jsonify(status=status, message=retval)