27/11/2023 20h

master
cherif 2023-11-27 20:09:01 +01:00
parent 7399df3ec4
commit 47743b1377
7 changed files with 2047 additions and 8 deletions

View File

@ -3,14 +3,12 @@
<component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="24/11/2023 - 18h30">
<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$/Session_Formation_Sequence.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation_Sequence.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Session_Formation.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/base_config_modele_journee.py" beforeDir="false" afterPath="$PROJECT_DIR$/base_config_modele_journee.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_document_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_document_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$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ressources_humaines.py" beforeDir="false" afterPath="$PROJECT_DIR$/ressources_humaines.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@ -377,7 +377,12 @@ def UpdateStagiairetoClass(diction):
return_message = ""
field_list = ['token', 'email', 'nom', 'prenom', 'telephone', 'modefinancement', 'opco',
'status', 'class_internal_url', 'session_id', 'price', 'employeur', 'comment',
'_id', 'client_rattachement_id', 'adresse', 'code_postal', 'ville', 'pays',]
'_id', 'client_rattachement_id', 'adresse', 'code_postal', 'ville', 'pays',
'tuteur1_nom', 'tuteur1_prenom', 'tuteur1_email', 'tuteur1_telephone', 'tuteur1_adresse',
'tuteur1_cp', 'tuteur1_ville', 'tuteur1_pays', 'tuteur1_include_com',
'tuteur2_nom', 'tuteur2_prenom', 'tuteur2_email', 'tuteur2_telephone', 'tuteur2_adresse',
'tuteur2_cp', 'tuteur2_ville', 'tuteur2_pays', 'tuteur2_include_com',
]
incom_keys = diction.keys()
for val in incom_keys:
@ -411,6 +416,9 @@ def UpdateStagiairetoClass(diction):
mydata = {}
user_nom = ""
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data({'token':mytoken})
if (local_status is not True):
return local_status, my_partner
myemail = ""
if ("email" in diction.keys()):
@ -470,6 +478,61 @@ def UpdateStagiairetoClass(diction):
if ("employeur" in diction.keys()):
mydata['employeur'] = str(diction['employeur']).strip()
if ("tuteur1_nom" in diction.keys()):
mydata['tuteur1_nom'] = str(diction['tuteur1_nom']).strip()
if ("tuteur1_email" in diction.keys()):
mydata['tuteur1_email'] = str(diction['tuteur1_email']).strip()
if ("tuteur1_email" in diction.keys()):
mydata['tuteur1_email'] = str(diction['tuteur1_email']).strip()
if ("tuteur1_telephone" in diction.keys()):
mydata['tuteur1_telephone'] = str(diction['tuteur1_telephone']).strip()
if ("tuteur1_adresse" in diction.keys()):
mydata['tuteur1_adresse'] = str(diction['tuteur1_adresse']).strip()
if ("tuteur1_cp" in diction.keys()):
mydata['tuteur1_cp'] = str(diction['tuteur1_cp']).strip()
if ("tuteur1_ville" in diction.keys()):
mydata['tuteur1_ville'] = str(diction['tuteur1_ville']).strip()
if ("tuteur1_pays" in diction.keys()):
mydata['tuteur1_pays'] = str(diction['tuteur1_pays']).strip()
if ("tuteur1_include_com" in diction.keys()):
mydata['tuteur1_include_com'] = str(diction['tuteur1_include_com']).strip()
if ("tuteur2_nom" in diction.keys()):
mydata['tuteur2_nom'] = str(diction['tuteur2_nom']).strip()
if("tuteur2_email" in diction.keys()):
mydata['tuteur2_email'] = str(diction['tuteur2_email']).strip()
if ("tuteur2_email" in diction.keys()):
mydata['tuteur2_email'] = str(diction['tuteur2_email']).strip()
if ("tuteur2_telephone" in diction.keys()):
mydata['tuteur2_telephone'] = str(diction['tuteur2_telephone']).strip()
if ("tuteur2_adresse" in diction.keys()):
mydata['tuteur2_adresse'] = str(diction['tuteur2_adresse']).strip()
if ("tuteur2_cp" in diction.keys()):
mydata['tuteur2_cp'] = str(diction['tuteur2_cp']).strip()
if ("tuteur2_ville" in diction.keys()):
mydata['tuteur2_ville'] = str(diction['tuteur2_ville']).strip()
if ("tuteur2_pays" in diction.keys()):
mydata['tuteur2_pays'] = str(diction['tuteur2_pays']).strip()
if ("tuteur2_include_com" in diction.keys()):
mydata['tuteur2_include_com'] = str(diction['tuteur2_include_com']).strip()
user_prenom = ""
if ("prenom" in diction.keys()):
mydata['prenom'] = str(diction['prenom']).strip()
@ -607,6 +670,8 @@ def UpdateStagiairetoClass(diction):
if (new_status == "2"):
mydata['inscription_preinscription_date'] = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
mydata['date_update'] = str(datetime.now())
mydata['update_by'] = str(my_partner['_id'])
ret_val2 = coll_inscription.find_one_and_update(query_key,
{"$set": mydata},
@ -743,7 +808,9 @@ def UpdateStagiairetoClass(diction):
local_ret_val = MYSY_GV.dbname['inscription'].find_one_and_update({'_id':ObjectId(str(inscription_line_id))},
{"$set":{'lms_user_id':str(local_participant_lms_id),
'lms_pwd':str(new_diction['password']),
'lms_class_code':str(lms_class_code)}
'lms_class_code':str(lms_class_code),
'date_update':str(datetime.now()),
'update_by':str(my_partner['_id'])}
},
upsert=False,
return_document=ReturnDocument.AFTER
@ -5798,3 +5865,76 @@ def GetAttendeeDetail_perSession_from_line_id(diction):
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récupérer les informations detaillées"
"""
Mise à jour des tuteurs
"""
def UpdateStagiairetoClass_Tuteurs(diction):
try:
return_message = ""
field_list = ['token', '_id',
'tuteur1_nom', 'tuteur1_prenom', 'tuteur1_email', 'tuteur1_telephone', 'tuteur1_adresse',
'tuteur1_cp', 'tuteur1_ville', 'tuteur1_pays', 'tuteur1_include_com',
'tuteur2_nom', 'tuteur2_prenom', 'tuteur2_email', 'tuteur2_telephone', 'tuteur2_adresse',
'tuteur2_cp', 'tuteur2_ville', 'tuteur2_pays', 'tuteur2_include_com',
]
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é, Creation partenaire annulée")
return False, "Impossible de mettre à jour stagiaire. Toutes les informations fournies ne sont pas valables"
"""
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['token', '_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 liste ")
return False, "Impossible de mettre à jour stagiaire, Toutes les informations necessaires n'ont pas été fournies"
query_key = {}
mytoken = ""
if ("token" in diction.keys()):
if diction['token']:
mytoken = str(diction['token']).strip()
# query_key['token'] = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data({'token': mytoken})
if (local_status is not True):
return local_status, my_partner
data_update = diction
my_id = str(diction['_id'])
del data_update['token']
del data_update['_id']
data_update['date_update'] = str(datetime.now())
data_update['update_by'] = str(my_partner['_id'])
result = MYSY_GV.dbname['inscription'].find_one_and_update(
{'_id':ObjectId(str(my_id)),
'partner_owner_recid':str(my_partner['recid'])},
{"$set": data_update},
upsert=False,
return_document=ReturnDocument.AFTER
)
if (result is None or "_id" not in result.keys()):
mycommon.myprint(
" Impossible de mettre à jour le tuteur (2) ")
return False, " Impossible de mettre à jour le tuteur (2) "
return True, " Le tuteur a été correctement mis à jour "
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de mettre à jour le tuteur "

File diff suppressed because it is too large Load Diff

View File

@ -77,6 +77,12 @@ def Add_Update_SessionFormation(diction):
if retval is False:
return "Err_Connexion", " La session de connexion n'est pas valide"
data_for_check_connexion = {'token':my_token}
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(data_for_check_connexion)
if (local_status is not True):
return local_status, my_partner
session_id = ""
if ("session_id" in diction.keys()):
session_id = diction['session_id']
@ -258,6 +264,7 @@ def Add_Update_SessionFormation(diction):
mydata['date_update'] = str(datetime.now())
mydata['update_by'] = str(my_partner['_id'])
mydata['valide'] = "1"
# Controle de cohérence sur les dates
@ -3523,14 +3530,20 @@ def Delete_List_SessionFormation(diction):
# Suppression des sessions
cpt = 0
for session_id in list_session_id:
deleted_session_qry = {'_id':ObjectId(str(session_id)), 'partner_owner_recid':str(partner_recid)}
deleted_data = MYSY_GV.dbname['session_formation'].delete_many(deleted_session_qry)
mycommon.myprint(str(inspect.stack()[0][3]) + str(deleted_data.deleted_count)+" Document supprimé. La session_id " + str(
mycommon.myprint(str(inspect.stack()[0][3]) + str(deleted_data.deleted_count)+" Document supprimé. La session_id " + str(
session_id) + " a été correctement supprimée ")
cpt = cpt + 1
if( cpt > 1 ):
return True, "("+str(cpt)+" sessions ont été correctement supprimées"
else:
return True, "La session a été correctement supprimée"
return True, "Les sessions ont été correctement supprimées"
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
@ -3656,3 +3669,91 @@ def Is_Corresponding_SessionFormation(diction):
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de verifier si la session correspond à une session existante"
"""
Cette fonction permet de dupliquer une session de formation.
par defaut lorqu'on duplique
- code_session = old_code_session+"_dup"
/!\ : Important : on prend une tab de session_id
"""
def Duplicate_List_Session_Formation(diction):
try:
field_list = ['token', 'tab_session_id']
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é, Creation partenaire annulée")
return False, " Toutes les informations fournies ne sont pas valables"
"""
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['token', 'tab_session_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 liste ")
return False, " Toutes les informations necessaires n'ont pas été fournies"
# Recuperation du recid du partner
mydata = {}
mytoken = ""
if ("token" in diction.keys()):
if diction['token']:
mytoken = diction['token']
# Verifier la validité du token
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data({'token':mytoken})
if (local_status is not True):
return local_status, my_partner
# Verification de la validité de toutes les session dans tab_session_id
tab_session_id = str(diction['tab_session_id']).split(',')
for session_id in tab_session_id :
if( MYSY_GV.dbname['session_formation'].count_documents({'_id':ObjectId(str(session_id)),
'valide':'1',
'partner_owner_recid':str(my_partner['recid'])}) != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La session_id :"+str(session_id)+" n'est pas valide ")
return False, " La session_id :"+str(session_id)+" n'est pas valide "
# Duplicata
cpt = 0
now = str(datetime.now())
for session_id in tab_session_id:
session_data = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(session_id)),
'valide':'1',
'partner_owner_recid':str(my_partner['recid'])})
if( session_data is None):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La session n'est pas valide ")
return False, " La session n'est pas valide "
duplicated_session = session_data
del duplicated_session['_id']
duplicated_session['code_session'] = str(session_data['code_session'])+"_dup"
duplicated_session['date_update'] = now
duplicated_session['update_by'] = str(my_partner['_id'])
MYSY_GV.dbname['session_formation'].insert_one(duplicated_session)
cpt = cpt + 1
if(cpt > 1 ):
return True, "("+str(cpt)+" sessions ont été correctement dupliquées "
else:
return True, "La session a été correctement dupliquée "
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de dupliquer la session de formation"

View File

@ -116,6 +116,7 @@ def Add_Update_Modele_Journee(diction):
# Il s'agit d'une mise à jour
my_data_JSON['date_update'] = str(datetime.now())
my_data_JSON['update_by'] = str(my_partner['_id'])
result = MYSY_GV.dbname['base_config_modele_journee'].find_one_and_update(
{'partner_owner_recid': str(my_partner['recid']),

23
main.py
View File

@ -2106,6 +2106,18 @@ def Is_Corresponding_SessionFormation():
return jsonify(status=localStatus, message=message )
"""
Dupliquer une liste de session de formation
"""
@app.route('/myclass/api/Duplicate_List_Session_Formation/', methods=['POST','GET'])
@crossdomain(origin='*')
def Duplicate_List_Session_Formation():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Duplicate_List_Session_Formation : payload = ",str(payload))
localStatus, message= SF.Duplicate_List_Session_Formation(payload)
return jsonify(status=localStatus, message=message )
"""
@ -3961,6 +3973,17 @@ def GetAttendeeDetail_perSession_from_line_id():
status, retval = inscription.GetAttendeeDetail_perSession_from_line_id(payload)
return jsonify(status=status, message=retval)
"""
API qui met à jour le tuteur
"""
@app.route('/myclass/api/UpdateStagiairetoClass_Tuteurs/', methods=['POST','GET'])
@crossdomain(origin='*')
def UpdateStagiairetoClass_Tuteurs():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### UpdateStagiairetoClass_Tuteurs payload = ",payload)
status, retval = inscription.UpdateStagiairetoClass_Tuteurs(payload)
return jsonify(status=status, message=retval)
"""

View File

@ -3016,6 +3016,63 @@ def GetAttendeeDetail_perSession(diction):
if ("pays" in local_Insc_retval.keys()):
my_retrun_dict['pays'] = local_Insc_retval['pays']
# Tuteurs
if ("tuteur1_nom" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_nom'] = local_Insc_retval['tuteur1_nom']
if ("tuteur1_prenom" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_prenom'] = local_Insc_retval['tuteur1_prenom']
if ("tuteur1_email" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_email'] = local_Insc_retval['tuteur1_email']
if ("tuteur1_telephone" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_telephone'] = local_Insc_retval['tuteur1_telephone']
if ("tuteur1_adresse" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_adresse'] = local_Insc_retval['tuteur1_adresse']
if ("tuteur1_cp" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_cp'] = local_Insc_retval['tuteur1_cp']
if ("tuteur1_ville" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_ville'] = local_Insc_retval['tuteur1_ville']
if ("tuteur1_pays" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_pays'] = local_Insc_retval['tuteur1_pays']
if ("tuteur1_include_com" in local_Insc_retval.keys()):
my_retrun_dict['tuteur1_include_com'] = local_Insc_retval['tuteur1_include_com']
if ("tuteur2_nom" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_nom'] = local_Insc_retval['tuteur2_nom']
if ("tuteur2_prenom" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_prenom'] = local_Insc_retval['tuteur2_prenom']
if ("tuteur2_email" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_email'] = local_Insc_retval['tuteur2_email']
if ("tuteur2_telephone" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_telephone'] = local_Insc_retval['tuteur2_telephone']
if ("tuteur2_adresse" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_adresse'] = local_Insc_retval['tuteur2_adresse']
if ("tuteur2_cp" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_cp'] = local_Insc_retval['tuteur2_cp']
if ("tuteur2_ville" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_ville'] = local_Insc_retval['tuteur2_ville']
if ("tuteur2_pays" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_pays'] = local_Insc_retval['tuteur2_pays']
if ("tuteur2_include_com" in local_Insc_retval.keys()):
my_retrun_dict['tuteur2_include_com'] = local_Insc_retval['tuteur2_include_com']
if ("certification_send_date" in local_Insc_retval.keys()):
if (str(local_Insc_retval['certification_send_date'])):
my_retrun_dict['certification_send_date'] = str(local_Insc_retval['certification_send_date'])[0:10]