17/10/2023 - 22h40

master
cherif 2023-10-17 21:41:23 +02:00
parent 5270f012dc
commit 10dd3fd91a
9 changed files with 1745 additions and 87 deletions

View File

@ -3,13 +3,14 @@
<component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="08/10/2023 - 22h40">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Activite.py" beforeDir="false" afterPath="$PROJECT_DIR$/Activite.py" 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.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/class_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/class_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/data_indexees.csv" beforeDir="false" afterPath="$PROJECT_DIR$/data_indexees.csv" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ela_output_test_file_pandas_2.txt" beforeDir="false" afterPath="$PROJECT_DIR$/ela_output_test_file_pandas_2.txt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ressources_humaines.py" beforeDir="false" afterPath="$PROJECT_DIR$/ressources_humaines.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@ -1817,6 +1817,14 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
mydata = {}
mydata['prenom'] = str(df['prenom'].values[n])
mydata['nom'] = str(df['nom'].values[n])
if (len(str(mydata['nom']).strip()) < 2):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nom' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ nom de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n])
@ -1941,7 +1949,7 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
if (str(status) != "0" and str(status) != "1" and str(status) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'status' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'status' de la ligne " + str(
n) + " est incorrecte. Valeurs acceptées : 0,1,2")
return False, " Le champ status de la ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2"
@ -1958,7 +1966,7 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
local_status, new_price = mycommon.IsFloat(local_price)
if( local_status is False ):
mycommon.myprint(
str(inspect.stack()[0][ 3]) + " Le champ 'prix' de ligne " + str( n) + " est incorrecte.")
str(inspect.stack()[0][ 3]) + " Le champ 'prix' de la ligne " + str( n) + " est incorrecte.")
return False, " Le champ prix de la ligne " + str(n) + " est incorrecte. "
mydata['price'] = local_price
@ -2147,6 +2155,14 @@ def Controle_AddStagiairetoClass_mass(saved_file=None, Folder=None, diction=None
mydata = {}
mydata['prenom'] = str(df['prenom'].values[n])
mydata['nom'] = str(df['nom'].values[n])
if(len(str(mydata['nom']).strip()) < 2 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nom' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ nom de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n])
@ -2283,7 +2299,7 @@ def Controle_AddStagiairetoClass_mass(saved_file=None, Folder=None, diction=None
if (str(status) != "0" and str(status) != "1" and str(status) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'status' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'status' de la ligne " + str(
n) + " est incorrecte. Valeurs acceptées : 0,1,2")
return False, " Le champ status de la ligne " + str(
n) + " est incorrecte. Valeurs acceptées : 0,1,2"
@ -2300,7 +2316,7 @@ def Controle_AddStagiairetoClass_mass(saved_file=None, Folder=None, diction=None
local_status, new_price = mycommon.IsFloat(local_price)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'prix' de ligne " + str(n) + " est incorrecte.")
str(inspect.stack()[0][3]) + " Le champ 'prix' de la ligne " + str(n) + " est incorrecte.")
return False, " Le champ prix de la ligne " + str(n) + " est incorrecte. "
mydata['price'] = local_price
@ -2459,6 +2475,14 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
#mydata['code_session'] = str(df['code_session'].values[n])
mydata['prenom'] = str(df['prenom'].values[n])
mydata['nom'] = str(df['nom'].values[n])
if (len(str(mydata['nom']).strip()) < 2):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nom' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ nom de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n])
@ -2633,7 +2657,7 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
mydata['status'] = str(df['status'].values[n]).strip()
if( str(mydata['status']) != "0" and str(mydata['status']) != "1" and str(mydata['status']) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'status' de ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2")
str(inspect.stack()[0][3]) + " Le champ 'status' de la ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2")
return False, " Le champ status de la ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2"
@ -2647,7 +2671,7 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
local_status, new_price = mycommon.IsFloat(local_price)
if( local_status is False ):
mycommon.myprint(
str(inspect.stack()[0][ 3]) + " Le champ 'prix' de ligne " + str( n) + " est incorrecte.")
str(inspect.stack()[0][ 3]) + " Le champ 'prix' de la ligne " + str( n) + " est incorrecte.")
return False, " Le champ prix de la ligne " + str(n) + " est incorrecte. "
mydata['price'] = local_price
@ -2777,6 +2801,14 @@ def Controle_AddStagiairetoClass_mass_for_many_session(saved_file=None, Folder=N
#mydata['code_session'] = str(df['code_session'].values[n])
mydata['prenom'] = str(df['prenom'].values[n])
mydata['nom'] = str(df['nom'].values[n])
if (len(str(mydata['nom']).strip()) < 2):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nom' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ nom de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n])
@ -2924,7 +2956,7 @@ def Controle_AddStagiairetoClass_mass_for_many_session(saved_file=None, Folder=N
mydata['status'] = str(df['status'].values[n]).strip()
if( str(mydata['status']) != "0" and str(mydata['status']) != "1" and str(mydata['status']) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'status' de ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2")
str(inspect.stack()[0][3]) + " Le champ 'status' de la ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2")
return False, " Le champ status de la ligne " + str(n) + " est incorrecte. Valeurs acceptées : 0,1,2"
@ -2936,7 +2968,7 @@ def Controle_AddStagiairetoClass_mass_for_many_session(saved_file=None, Folder=N
local_status, new_price = mycommon.IsFloat(local_price)
if( local_status is False ):
mycommon.myprint(
str(inspect.stack()[0][ 3]) + " Le champ 'prix' de ligne " + str( n) + " est incorrecte.")
str(inspect.stack()[0][ 3]) + " Le champ 'prix' de la ligne " + str( n) + " est incorrecte.")
return False, " Le champ prix de la ligne " + str(n) + " est incorrecte. "
mydata['price'] = local_price

File diff suppressed because it is too large Load Diff

View File

@ -231,12 +231,12 @@ def Add_Update_SessionFormation(diction):
str(diction['date_fin'])[0:10], '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " Formation : "+str(code_session)+" : La date debut " + str(
diction['date_debut']) +
" est postérieure à la date de fin " + str(diction['date_fin']) )
3]) + " Session de Formation : La date debut " + str(
diction['date_debut'])[0:10] +
" est postérieure à la date de fin " + str(diction['date_fin'])[0:10] )
return False, " Formation : "+str(code_session)+" : La date debut de formation " + str(diction['date_debut']) + \
" est postérieure à la date de fin de formation " + str(diction['date_fin']) + " "
return False, " Session de Formation : La date debut de formation " + str(diction['date_debut'])[0:10] + \
" est postérieure à la date de fin de formation " + str(diction['date_fin'])[0:10] + " "
# Verification de la cohérence des dates d'inscription si on a bien une date debut et une date de fin
if (str(diction['date_debut_inscription']).strip() != "" and str(
@ -279,9 +279,9 @@ def Add_Update_SessionFormation(diction):
if (datetime.strptime(str(diction['date_debut_inscription'])[0:10], '%d/%m/%Y') > datetime.strptime(
str(diction['date_fin'])[0:10], '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][3]) + " -Formation : "+str(code_session)+" : La date de debut d'inscription " + str( diction['date_debut_inscription']) + " est postérieure à la date de fin de formation " + str(diction['date_fin']))
str(inspect.stack()[0][3]) + " - Session de Formation : La date de debut d'inscription " + str( diction['date_debut_inscription'])+ " est postérieure à la date de fin de formation " + str(diction['date_fin']))
return False, " Formation : "+str(code_session)+" : La date de debut d'inscription " + str( diction['date_debut_inscription']) + " est postérieure à la date de fin de formation " + str(diction['date_fin'])+" "
return False, " Session de Formation : La date de debut d'inscription " + str( diction['date_debut_inscription'])[0:10] + " est postérieure à la date de fin de formation " + str(diction['date_fin'])[0:10]+" "
# Verification : Date de fin inscription n'est pas > date de fin de formation
if (datetime.strptime(str(diction['date_fin_inscription'])[0:10], '%d/%m/%Y') > datetime.strptime(
@ -809,7 +809,7 @@ Recuperation de la liste avec des filter du type like
def GetAllValideSessionPartner_List_filter_like(diction):
try:
field_list = ['token','class_title', 'code_session']
field_list = ['token','class_title', 'code_session', 'class_external_code']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
@ -844,6 +844,9 @@ def GetAllValideSessionPartner_List_filter_like(diction):
if ("class_title" in diction.keys()):
filt_class_title = {'title': {'$regex': str(diction['class_title']),"$options": "i"}}
filt_class_external_code = {}
if ("class_external_code" in diction.keys()):
filt_class_external_code = {'external_code': {'$regex': str(diction['class_external_code']), "$options": "i"}}
filt_code_session = {}
if ("code_session" in diction.keys()):
@ -857,7 +860,7 @@ def GetAllValideSessionPartner_List_filter_like(diction):
'from': 'myclass',
'localField': 'class_internal_url',
'foreignField': 'internal_url',
'pipeline': [{'$match': { '$and' : [ filt_class_title, {'partner_owner_recid':str(my_partner['recid'])} ]} }, {'$project': {'title': 1, 'domaine':1,
'pipeline': [{'$match': { '$and' : [ filt_class_title,filt_class_external_code, {'partner_owner_recid':str(my_partner['recid'])} ]} }, {'$project': {'title': 1, 'domaine':1,
'duration':1, 'duration_unit':1, 'external_code':1}}],
'as': 'myclass_collection'
}
@ -1349,8 +1352,8 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
3]) + " - Impossible de créer la session de formation : La date debut " + str(mydata['date_debut']) +
" est postérieure à la date de fin " + str(mydata['date_fin']) + " pour la ligne "+str(n+2)+" ")
return False, " Impossible de créer la session de formation : La date debut " + str(mydata['date_debut']) +\
" est postérieure à la date de fin " + str(mydata['date_fin']) + " pour la ligne "+str(n+2)+" "
return False, " Impossible de créer la session de formation : La date debut " + str(mydata['date_debut'])[0:10] +\
" est postérieure à la date de fin " + str(mydata['date_fin'])[0:10] + " pour la ligne "+str(n+2)+" "
local_nb_participants = "1"
@ -1361,8 +1364,8 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
local_status, new_participants = mycommon.IsInt(local_nb_participants)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de ligne " + str(n+2) + " est incorrecte.")
return False, " Le champ nb_participant de ligne " + str(n+2) + " est incorrecte. "
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de la ligne " + str(n+2) + " est incorrecte.")
return False, " Le champ nb_participant de la ligne " + str(n+2) + " est incorrecte. "
mydata['nb_participant'] = str(new_participants)
@ -1374,8 +1377,8 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
local_status, new_prix_session = mycommon.IsFloat(prix_session)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de ligne " + str(n+2) + " est incorrecte.")
return False, " Le champ prix_session de ligne " + str(n+2) + " est incorrecte. "
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de la ligne " + str(n+2) + " est incorrecte.")
return False, " Le champ prix_session de la ligne " + str(n+2) + " est incorrecte. "
mydata['prix_session'] = str(new_prix_session)
@ -1383,6 +1386,14 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
if ("code_session" in df.keys()):
if (str(df['code_session'].values[n])):
local_code_session = str(df['code_session'].values[n]).strip()
if (len(str(local_code_session).strip()) < 2):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'code_session' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ code_session de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['code_session'] = local_code_session
local_adresse = ""
@ -1405,9 +1416,9 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
if( session_ondemande != "1" and session_ondemande != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'session_ondemande' de ligne " + str(n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
return False, " Le champ 'session_ondemande' de la ligne " + str(n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['session_ondemande'] = session_ondemande
@ -1437,9 +1448,9 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
distanciel = str(mycommon.tryInt(distanciel))
if (distanciel != "1" and distanciel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'distanciel' de ligne " + str(
return False, " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
@ -1454,9 +1465,9 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
if (presentiel != "1" and presentiel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'presentiel' de ligne " + str(
return False, " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['presentiel'] = presentiel
@ -1521,8 +1532,8 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
if( str(local_session) != "0" and str(local_session) != "1" and str(local_session) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_status' de ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
str(inspect.stack()[0][3]) + " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
if( str(local_session) == "1"):
mydata['session_status'] = str("true")
@ -1813,8 +1824,8 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
n + 2) + " ")
return False, " Impossible de créer la session de formation : La date debut " + str(
mydata['date_debut']) + \
" est postérieure à la date de fin " + str(mydata['date_fin']) + " pour la ligne " + str(
mydata['date_debut'])[0:10] + \
" est postérieure à la date de fin " + str(mydata['date_fin'])[0:10] + " pour la ligne " + str(
n + 2) + " "
local_nb_participants = "1"
@ -1825,9 +1836,9 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
local_status, new_participants = mycommon.IsInt(local_nb_participants)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ nb_participant de ligne " + str(n + 2) + " est incorrecte. Un nombre Entier Positif doit être fourni "
return False, " Le champ nb_participant de la ligne " + str(n + 2) + " est incorrecte. Un nombre Entier Positif doit être fourni "
mydata['nb_participant'] = str(new_participants)
@ -1839,9 +1850,9 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
local_status, new_prix_session = mycommon.IsFloat(prix_session)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ prix_session de ligne " + str(n + 2) + " est incorrecte. "
return False, " Le champ prix_session de la ligne " + str(n + 2) + " est incorrecte. "
mydata['prix_session'] = str(new_prix_session)
@ -1849,6 +1860,13 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
if ("code_session" in df.keys()):
if (str(df['code_session'].values[n])):
local_code_session = str(df['code_session'].values[n]).strip()
if(len(str(local_code_session).strip()) < 2 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'code_session' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ code_session de la ligne " + str(n + 2) + " doit faire plus de deux caractères. "
mydata['code_session'] = local_code_session
local_adresse = ""
@ -1866,9 +1884,9 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
if (session_ondemande != "1" and session_ondemande != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'session_ondemande' de ligne " + str(
return False, " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['session_ondemande'] = session_ondemande
@ -1898,9 +1916,9 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
if (distanciel != "1" and distanciel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. La valeur fournie est "+str(distanciel) )
return False, " Le champ 'distanciel' de ligne " + str(
return False, " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0'. La valeur fournie est "+str(distanciel)
mydata['distantiel'] = distanciel
@ -1913,9 +1931,9 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
if (presentiel != "1" and presentiel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'presentiel' de ligne " + str(
return False, " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['presentiel'] = presentiel
@ -1977,8 +1995,8 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
if( str(local_session) != "0" and str(local_session) != "1" and str(local_session) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_status' de ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
str(inspect.stack()[0][3]) + " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
if( str(local_session) == "1"):
mydata['session_status'] = str("true")
@ -2014,9 +2032,9 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer la session de formation : La date debut des inscriptions " + str(
mydata['date_debut_inscription']) +
mydata['date_debut_inscription'])[0:10] +
" est postérieure à la date de fin des inscriptions " + str(
mydata['date_fin_inscription']) + " pour la ligne " + str(n + 2) + " ")
mydata['date_fin_inscription'])[0:10] + " pour la ligne " + str(n + 2) + " ")
return False, " Impossible de créer la session de formation : La date de fin des inscriptions est antérieure à la date de début des inscriptions : Ligne " + str(
n + 2) + " "
@ -2111,6 +2129,20 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
# print(" Lecture du fichier : "+saved_file)
nb_line = 0
""""
update du 31/08/23 : Controle de l'integrité du fichier avant import
"""
local_controle_status, local_controle_message = Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file,
Folder,
diction)
if (local_controle_status is False):
return local_controle_status, local_controle_message
print(" #### local_controle_message = ", local_controle_message)
df = pd.read_csv(saved_file, encoding='utf8', on_bad_lines='skip', sep=';', encoding_errors='ignore')
df = df.fillna('')
# Dictionnaire des champs utilisables
@ -2204,8 +2236,8 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
n + 2) + " ")
return False, " Impossible de créer la session de formation : La date debut " + str(
mydata['date_debut']) + \
" est postérieure à la date de fin " + str(mydata['date_fin']) + " pour la ligne " + str(
mydata['date_debut'])[0:10] + \
" est postérieure à la date de fin " + str(mydata['date_fin'])[0:10] + " pour la ligne " + str(
n + 2) + " "
local_nb_participants = "1"
@ -2216,9 +2248,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
local_status, new_participants = mycommon.IsInt(local_nb_participants)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ nb_participant de ligne " + str(n + 2) + " est incorrecte. "
return False, " Le champ nb_participant de la ligne " + str(n + 2) + " est incorrecte. "
mydata['nb_participant'] = str(new_participants)
@ -2230,9 +2262,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
local_status, new_prix_session = mycommon.IsFloat(prix_session)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ prix_session de ligne " + str(n + 2) + " est incorrecte. "
return False, " Le champ prix_session de la ligne " + str(n + 2) + " est incorrecte. "
mydata['prix_session'] = str(new_prix_session)
@ -2250,9 +2282,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
if( count_class != 1 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'code_externe' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'code_externe' de la ligne " + str(
n + 2) + " ne correspond pas à une formation valide.")
return False, " Le champ 'code_externe' de ligne " + str(
return False, " Le champ 'code_externe' de la ligne " + str(
n + 2) + " ne correspond pas à une formation valide."
class_from_external_code = MYSY_GV.dbname['myclass'].find({'external_code':str(external_code), 'valide':'1',
@ -2260,21 +2292,25 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
if(class_from_external_code is None ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'code_exyer' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'code_exyer' de la ligne " + str(
n + 2) + " ne correspond pas à une formation valide (2).")
return False, " Le champ 'code_exyer' de ligne " + str( n + 2) + " ne correspond pas à une formation valide (2)."
return False, " Le champ 'code_exyer' de la ligne " + str( n + 2) + " ne correspond pas à une formation valide (2)."
class_internal_url = str(class_from_external_code[0]['internal_url'])
local_code_session = ""
if ("code_session" in df.keys()):
if (str(df['code_session'].values[n])):
local_code_session = str(df['code_session'].values[n]).strip()
if (len(str(local_code_session).strip()) < 2):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'code_session' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ code_session de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['code_session'] = local_code_session
local_adresse = ""
@ -2291,9 +2327,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
if (session_ondemande != "1" and session_ondemande != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'session_ondemande' de ligne " + str(
return False, " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['session_ondemande'] = session_ondemande
@ -2321,9 +2357,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
distanciel = str(mycommon.tryInt(distanciel))
if (distanciel != "1" and distanciel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. Valeur reçue : "+str(distanciel))
return False, " Le champ 'distanciel' de ligne " + str(
return False, " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide. Valeur reçue : "+str(distanciel)
mydata['distantiel'] = distanciel
@ -2335,9 +2371,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
presentiel = str(mycommon.tryInt(presentiel))
if (presentiel != "1" and presentiel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de ligne " + str(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'presentiel' de ligne " + str(
return False, " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['presentiel'] = presentiel
@ -2397,8 +2433,8 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
if( str(local_session) != "0" and str(local_session) != "1" and str(local_session) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_status' de ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
str(inspect.stack()[0][3]) + " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
if( str(local_session) == "1"):
mydata['session_status'] = str("true")
@ -2495,6 +2531,412 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
"""
Controle fichier avant import
"""
def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Folder=None, diction=None):
try:
'''
# Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés
# Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API
# Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
# field_list.
'''
field_list = ['token']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ '" + val + "' n'existe pas, Creation session annulée")
return False, " Le champ '" + val + "' n'existe pas, Creation session annulée "
'''
Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente,
On controle que les champs obligatoires sont presents dans la liste
'''
field_list_obligatoire = ['token', ]
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, " La valeur '" + val + "' n'est pas presente dans liste"
my_token = ""
if ("token" in diction.keys()):
if diction['token']:
my_token = diction['token']
# Verifier la validité du token
retval = mycommon.check_partner_token_validity("", my_token)
if retval is False:
return "Err_Connexion", " La session de connexion n'est pas valide"
partner_recid = mycommon.get_parnter_recid_from_token(my_token)
if (partner_recid is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - partner_recid KO : Impossible d'importer la liste des sessions ")
return False, "les information de connexion sont incorrectes. Impossible d'importer la liste des sessions"
nb_line = 0
df = pd.read_csv(saved_file, encoding='utf8', on_bad_lines='skip', sep=';', encoding_errors='ignore')
df = df.fillna('')
# Dictionnaire des champs utilisables
'''
# Verification que les noms des colonne sont bien corrects"
'''
field_list = ['date_debut', 'date_fin', 'nb_participant', 'adresse', 'code_postal', 'ville', 'pays',
'session_status', 'date_debut_inscription', 'date_fin_inscription', 'attestation', 'formateur',
'code_session', "distanciel", "presentiel", "prix_session", 'contenu_ftion', 'lms_class_code',
'session_ondemande', 'session_etape', 'formation_code_externe']
# Controle du nombre de lignes dans le fichier.
total_rows = len(df)
if (total_rows > MYSY_GV.MAX_PARTICIPANT_BY_CSV):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le fichier comporte plus de " + str(
MYSY_GV.MAX_PARTICIPANT_BY_CSV) + " lignes.")
return False, " Le fichier comporte plus de " + str(MYSY_GV.MAX_PARTICIPANT_BY_CSV) + " lignes."
# print(df.columns)
for val in df.columns:
if str(val).lower() not in field_list:
mycommon.myprint(
str(inspect.stack()[0][3]) + " : entete du fichier csv. '" + val + "' n'est pas acceptée")
return False, " Entete du fichier csv. La Colonne '" + val + "' n'est pas acceptée"
# Verification des champs obligatoires dans le fichier
field_list_obligatoire_file = ['date_debut', 'date_fin', 'session_status', 'code_session',
'formation_code_externe']
for val in field_list_obligatoire_file:
if val not in df.columns:
mycommon.myprint(
str(inspect.stack()[0][
3]) + " : Le champ '" + val + "' n'est pas présent dans le fichier. Il est obligatoire")
return False, " Le champ '" + val + "' n'est pas présent dans le fichier. Il est obligatoire "
x = range(0, total_rows)
ignored_line = ""
nb_inserted_line = 0
for n in x:
mydata = {}
nb_inserted_line = nb_inserted_line + 1
# Si une ligne n'a aucune information obligatoire, alors on ignore la ligne
if (str(df['code_session'].values[n]) == "nan" or str(df['session_status'].values[n]) == "nan" or
str(df['date_debut'].values[n]) == "nan" or str(df['date_fin'].values[n]) == "nan"):
mycommon.myprint(str(
inspect.stack()[0][
3]) + " - La ligne " + str(n + 2) + " a été ignorée")
ignored_line = str(n + 2) + " , " + str(ignored_line)
nb_inserted_line = nb_inserted_line - 1
continue
external_code = ""
if ("formation_code_externe" in df.keys()):
if (str(df['formation_code_externe'].values[n])):
external_code = str(df['formation_code_externe'].values[n]).strip()
# On verifie l'existance de l'external code pour ce une des formations de ce partner
count_class = MYSY_GV.dbname['myclass'].count_documents(
{'external_code': str(external_code), 'valide': '1',
'locked': '0', 'partner_owner_recid': str(partner_recid)})
if (count_class < 0):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Ligne " + str(
n + 2) + " : Le code_externe n'est pas valide.")
return False, " Ligne " + str(n + 2) + " : Le code_externe n'est pas valide."
if (count_class > 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Erreur : Ligne " + str(
n + 2) + " : Le code_externe corresponds à plus d'une formation.")
return False, " Erreur : Ligne " + str(
n + 2) + " : Le code_externe corresponds à plus d'une formation."
class_date = MYSY_GV.dbname['myclass'].find_one(
{'external_code': str(external_code), 'valide': '1',
'locked': '0', 'partner_owner_recid': str(partner_recid)})
mydata['date_debut'] = str(df['date_debut'].values[n]).strip().split(" ")[0]
local_status = mycommon.CheckisDate(mydata['date_debut'])
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 2) + "."
"La date debut n'est pas au format jj/mm/aaaa ")
return False, " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 2) + ". La date debut n'est pas au format jj/mm/aaaa "
mydata['date_fin'] = str(df['date_fin'].values[n]).strip().split(" ")[0]
local_status = mycommon.CheckisDate(mydata['date_fin'])
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 2) + "."
"La date date_fin n'est pas au format jj/mm/aaaa ")
return False, " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 1) + ". La date fin n'est pas au format jj/mm/aaaa "
## Verification de la cohérence des dates. Date_du doit <= Date_au
if (datetime.strptime(str(mydata['date_debut']).strip(), '%d/%m/%Y') > datetime.strptime(
str(mydata['date_fin']).strip(), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer la session de formation : La date debut " + str(
mydata['date_debut']) +
" est postérieure à la date de fin " + str(mydata['date_fin']) + " pour la ligne " + str(
n + 2) + " ")
return False, " Impossible de créer la session de formation : La date debut " + str(
mydata['date_debut']) + \
" est postérieure à la date de fin " + str(mydata['date_fin'])[0:10] + " pour la ligne " + str(
n + 2) + " "
local_nb_participants = "1"
if ("nb_participant" in df.keys()):
if (str(df['nb_participant'].values[n])):
local_nb_participants = str(df['nb_participant'].values[n]).strip()
local_status, new_participants = mycommon.IsInt(local_nb_participants)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'nb_participant' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ nb_participant de la ligne " + str(n + 2) + " est incorrecte. Un nombre Entier Positif doit être fourni "
mydata['nb_participant'] = str(new_participants)
prix_session = "0"
if ("prix_session" in df.keys()):
if (str(df['prix_session'].values[n])):
prix_session = str(df['prix_session'].values[n]).strip()
local_status, new_prix_session = mycommon.IsFloat(prix_session)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'prix_session' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ prix_session de la ligne " + str(n + 2) + " est incorrecte. "
mydata['prix_session'] = str(new_prix_session)
local_code_session = ""
if ("code_session" in df.keys()):
if (str(df['code_session'].values[n])):
local_code_session = str(df['code_session'].values[n]).strip()
if (len(str(local_code_session).strip()) < 2):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'code_session' de la ligne " + str(
n + 2) + " doit faire plus de deux caractères.")
return False, " Le champ code_session de la ligne " + str(
n + 2) + " doit faire plus de deux caractères. "
mydata['code_session'] = local_code_session
local_adresse = ""
if ("adresse" in df.keys()):
if (str(df['adresse'].values[n])):
local_adresse = str(df['adresse'].values[n]).strip()
mydata['adresse'] = local_adresse
session_ondemande = "0"
if ("session_ondemande" in df.keys()):
if (str(df['session_ondemande'].values[n])):
session_ondemande = str(df['session_ondemande'].values[n]).strip()
session_ondemande = str(mycommon.tryInt(str(session_ondemande)))
if (session_ondemande != "1" and session_ondemande != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'session_ondemande' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['session_ondemande'] = session_ondemande
local_code_postal = ""
if ("code_postal" in df.keys()):
if (str(df['code_postal'].values[n])):
local_code_postal = str(df['code_postal'].values[n]).strip()
if ("." in str(local_code_postal)):
# /!\ : l'utilisateur envoie un code poster au format entier, plutot que string.
local_code_postal = str(local_code_postal).split(".")[0]
elif ("." in str(local_code_postal)):
# /!\ : l'utilisateur envoie un code poster au format entier, plutot que string.
local_code_postal = str(local_code_postal).split(",")[0]
else:
local_code_postal = str(local_code_postal)
mydata['code_postal'] = local_code_postal
distanciel = ""
if ("distanciel" in df.keys()):
if (str(df['distanciel'].values[n])):
distanciel = str(df['distanciel'].values[n]).strip()
distanciel = str(mycommon.tryInt(distanciel))
if (distanciel != "1" and distanciel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. La valeur fournie est "+str(distanciel) )
return False, " Le champ 'distanciel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0'. La valeur fournie est "+str(distanciel)
mydata['distantiel'] = distanciel
presentiel = ""
if ("presentiel" in df.keys()):
if (str(df['presentiel'].values[n])):
presentiel = str(df['presentiel'].values[n]).strip()
presentiel = str(mycommon.tryInt(presentiel))
if (presentiel != "1" and presentiel != "0"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte.")
return False, " Le champ 'presentiel' de la ligne " + str(
n + 2) + " est incorrecte. Les valeurs acceptées sont '1' ou '0' ou vide"
mydata['presentiel'] = presentiel
# mydata['code_postal'] = str(df['code_postal'].values[n]).strip()
local_ville = ""
if ("ville" in df.keys()):
if (str(df['ville'].values[n])):
local_ville = str(df['ville'].values[n]).strip()
mydata['ville'] = local_ville
local_pays = ""
if ("pays" in df.keys()):
if (str(df['pays'].values[n])):
local_pays = str(df['pays'].values[n]).strip()
mydata['pays'] = local_pays
contenu_ftion = ""
if ("contenu_ftion" in df.keys()):
if (str(df['contenu_ftion'].values[n])):
contenu_ftion = str(df['contenu_ftion'].values[n]).strip()
mydata['contenu_ftion'] = contenu_ftion
# mydata['ville'] = str(df['ville'].values[n]).strip()
local_attestation_certif = ""
if ("attestation" in df.keys()):
if (str(df['attestation'].values[n])):
local_attestation_certif = str(df['attestation'].values[n]).strip()
mydata['attestation_certif'] = local_attestation_certif
# mydata['attestation_certif'] = str(df['attestation'].values[n]).strip()
local_formateur = ""
if ("formateur" in df.keys()):
if (str(df['formateur'].values[n])):
local_formateur = str(df['formateur'].values[n]).strip()
mydata['formateur'] = local_formateur
session_status = ""
if ("session_status" in df.keys()):
if (str(df['session_status'].values[n])):
session_status = str(df['session_status'].values[n]).strip()
mydata['session_status'] = session_status
session_etape = ""
if ("session_etape" in df.keys()):
if (str(df['session_etape'].values[n])):
session_etape = str(df['session_etape'].values[n]).strip()
mydata['session_etape'] = session_etape
"""
Update du 11/08/23 :
- le status va etre geré en 0 (desactivé) et 1 (activé)
- mise en commentaire du code ci-dessous
local_session = str(df['session_status'].values[n]).strip()
if( str(local_session) != "0" and str(local_session) != "1" and str(local_session) != "2"):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2")
return False, " Le champ 'session_status' de la ligne " + str(n+2) + " est incorrecte. Les valeurs acceptées sont 0,1,2"
if( str(local_session) == "1"):
mydata['session_status'] = str("true")
"""
mydata['date_debut_inscription'] = str(df['date_debut_inscription'].values[n]).strip().split(" ")[0]
local_status = mycommon.CheckisDate(mydata['date_debut_inscription'])
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 2) + "."
"La date_debut_inscription n'est pas au format jj/mm/aaaa ")
return False, " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 2) + ". La date_debut_inscription n'est pas au format jj/mm/aaaa "
mydata['date_fin_inscription'] = str(df['date_fin_inscription'].values[n]).strip().split(" ")[0]
local_status = mycommon.CheckisDate(mydata['date_fin_inscription'])
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 2) + "."
"La date_fin_inscription n'est pas au format jj/mm/aaaa ")
return False, " - Impossible de créer/mettre à jour la session de formation à ligne " + str(
n + 1) + ". La date_fin_inscription n'est pas au format jj/mm/aaaa "
## Verification de la cohérence des dates. Date_du doit <= Date_au
if (datetime.strptime(str(mydata['date_debut_inscription']).strip(), '%d/%m/%Y') > datetime.strptime(
str(mydata['date_fin_inscription']).strip(), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Impossible de créer la session de formation : La date debut des inscriptions " + str(
mydata['date_debut_inscription']) +
" est postérieure à la date de fin des inscriptions " + str(
mydata['date_fin_inscription']) + " pour la ligne " + str(n + 2) + " ")
return False, " Impossible de créer la session de formation : La date de fin des inscriptions est antérieure à la date de début des inscriptions : Ligne " + str(
n + 2) + " "
mydata['token'] = str(my_token)
# print(" ### mydata ", mydata)
diction_for_session_id = {}
diction_for_session_id['date_du'] = str(mydata['date_debut']).split(" ")[0]
diction_for_session_id['date_au'] = str(mydata['date_fin']).split(" ")[0]
diction_for_session_id['code_postal'] = str(mydata['code_postal'])
diction_for_session_id['adresse'] = str(mydata['adresse'])
return True, str(total_rows)+" sessions dans le fichier"
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 controler le fichier des sessions de formation en masse "
"""
Cette fonction supprime une session de formation.
/!\ : il faut s'assurer qu'il n'y a aucune inscription avant de supprimer valide.

View File

@ -169,8 +169,8 @@ def add_class(diction):
if (mycommon.tryInt(part_nb_active_training) >= mycommon.tryInt(part_pack_nb_training_auto)):
mycommon.myprint(str(
inspect.stack()[0][3]) + " - Impossible d'ajouter la formation "+str(diction['title'])+" - Vous avez atteint le nombre maximum de formation autorisé")
return False, " - Impossible d'ajouter la formation "+str(diction['title'])+" Vous avez atteint le nombre maximum de formation autorisé (" + str(
inspect.stack()[0][3]) + " - Impossible d'ajouter la formation "+str(diction['title'])+" - Vous avez atteint le nombre maximum de formations autorisées")
return False, " - Impossible d'ajouter la formation "+str(diction['title'])+" Vous avez atteint le nombre maximum de formations autorisées (" + str(
part_pack_nb_training_auto) + "" \
"). La formation '" + str(
diction['external_code']) + "' n'a pas été enregistrée"
@ -218,9 +218,9 @@ def add_class(diction):
mydata['objectif'] = diction['objectif']
if (len(mycommon.cleanhtml(diction['objectif'])) > MYSY_GV.CLASS_ZONE_OBJECTIF_LIMIT):
mycommon.myprint(
str(inspect.stack()[0][3]) + " : le champ 'objectif' de La formation " + str(
str(inspect.stack()[0][3]) + " : le champ 'objectif' de la formation " + str(
diction['external_code']) + " a plus de " + str(MYSY_GV.CLASS_ZONE_OBJECTIF_LIMIT) + " caractères")
return False, " le champ 'objectif' de La formation " + str(
return False, " le champ 'objectif' de la formation " + str(
mydata['external_code']) + " a plus de " + str(MYSY_GV.CLASS_ZONE_OBJECTIF_LIMIT) + " caractères"
@ -4281,3 +4281,68 @@ def get_Class_From_Internal_Url(diction):
return False, " Impossible de récupérer les données de la formation "
"""
Pour facilité la communication pr l'ingestion du des formation scrappées,
Cette fonction va retouner la formation avec la clé qui est un url
/!\ : on ne fais pas de controle de recid (car c'est le bot admin qui doit l'utiliser (revoir cette logique plus tard)
"""
def get_Class_From_Url(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'url']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
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', 'url']
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, " 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
RetObject = []
val_tmp = 1
for retval in MYSY_GV.dbname['myclass'].find({'valide': '1', 'locked': '0', 'url':str(diction['url']), }):
user = retval
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
RetObject.append(mycommon.JSONEncoder().encode(user))
#print(" RetObject = ", 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 les données de la formation "

View File

@ -1,4 +1,4 @@
,index,mots,occurence,moyenne,id_formation,source_field
0,0,integrative,1,0.33,MYSY_Test_AR_DEL,title
1,1,praticien,1,0.33,MYSY_Test_AR_DEL,title
2,2,aromatherapie,1,0.33,MYSY_Test_AR_DEL,title
,index,mots,occurence,moyenne,id_formation,source_field,partner_owner_recid
0,0,achat,1,0.33,178,title,dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de1bot
1,1,negociation,1,0.33,178,title,dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de1bot
2,2,niveau,1,0.33,178,title,dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de1bot

1 index mots occurence moyenne id_formation source_field partner_owner_recid
2 0 0 integrative achat 1 0.33 MYSY_Test_AR_DEL 178 title dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de1bot
3 1 1 praticien negociation 1 0.33 MYSY_Test_AR_DEL 178 title dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de1bot
4 2 2 aromatherapie niveau 1 0.33 MYSY_Test_AR_DEL 178 title dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de1bot

View File

@ -1,4 +1,6 @@
mots occurence moyenne id_formation source_field
0 integrative 1 0.33 MYSY_Test_AR_DEL title
1 praticien 1 0.33 MYSY_Test_AR_DEL title
2 aromatherapie 1 0.33 MYSY_Test_AR_DEL title
mots ... partner_owner_recid
0 achat ... dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de...
1 negociation ... dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de...
2 niveau ... dbdd36f3d86a73e2bfac7b3f10f062ce1e7c22f7da37de...
[3 rows x 6 columns]

18
main.py
View File

@ -389,7 +389,7 @@ d'un partenaire
def get_partner_class_external_code():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### payload = ",str(payload)+" IP requester = "+str(request.remote_addr))
print(" ### get_partner_class_external_code payload = ",str(payload)+" IP requester = "+str(request.remote_addr))
status, retval = cm.get_partner_class_external_code(payload)
return jsonify(status=status, message=retval)
@ -401,8 +401,7 @@ def get_partner_class_external_code():
def update_class():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### payload = ",payload)
print(" ### update_class payload = ",payload)
status, retval = cm.update_class(payload)
return jsonify(status=status, message=retval)
@ -2202,6 +2201,19 @@ def get_Class_From_Internal_Url():
return jsonify(status=localStatus, message=message )
"""
Cette API retourne une formation, en partant l'url de la formation
/!\ : on ne fais pas de controle de recid (car c'est le bot admin qui doit l'utiliser (revoir cette logique plus tard)
"""
@app.route('/myclass/api/get_Class_From_Url/', methods=['POST','GET'])
@crossdomain(origin='*')
def get_Class_From_Url():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### get_Class_From_Url : payload = ",str(payload))
localStatus, message= cm.get_Class_From_Url(payload)
return jsonify(status=localStatus, message=message )
"""

View File

@ -2292,7 +2292,11 @@ def Ela_Remove_Ponct_Special_Caractere(sentence):
'''
Cette fonction prend un titre (une phrase) et retrounre
l'internal url associé
l'internal url associé.
L'agoritheme de fonction prend un titre, supprime les caractère speciaux
la suffixe avec une variable aleatoire qui depend du "datetime.now()"
'''
def CreateInternalUrl(sentence=None):
try:
@ -2316,7 +2320,7 @@ def CreateInternalUrl(sentence=None):
if (my_internal_url.endswith('-')):
my_internal_url = my_internal_url[:-1]
# Creation de la variable aleatoire en se basant sur le datetime now
suffix = hashlib.md5(str(datetime.now()).encode()).hexdigest()
final_internal_url = str(my_internal_url) + "-" + str(suffix[-3:])