20/08/23 - 23h30

master
cherif 2023-08-20 23:57:00 +02:00
parent df18c5fedd
commit 2add31c414
5 changed files with 3764 additions and 118 deletions

View File

@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="19/08/23 - 15h30"> <list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="19/08/23 - 20h30">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <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$/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$/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$/Session_Formation.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -36,7 +35,7 @@
&quot;keyToString&quot;: { &quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;, &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/Users/billa/Documents/Projet_X/projet_w_siteweb/developpement/PrjX_back&quot; &quot;last_opened_file_path&quot;: &quot;C:/Users/billa/Documents/myclass.com/Siteweb/Production/Ela_back/Modules/Crawl_website&quot;
} }
}</component> }</component>
<component name="RunManager"> <component name="RunManager">
@ -71,13 +70,6 @@
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1680804787304</updated> <updated>1680804787304</updated>
</task> </task>
<task id="LOCAL-00026" summary="23/05/23 - 23h">
<created>1684872485100</created>
<option name="number" value="00026" />
<option name="presentableId" value="LOCAL-00026" />
<option name="project" value="LOCAL" />
<updated>1684872485101</updated>
</task>
<task id="LOCAL-00027" summary="25/05/23 - 17h"> <task id="LOCAL-00027" summary="25/05/23 - 17h">
<created>1685028085742</created> <created>1685028085742</created>
<option name="number" value="00027" /> <option name="number" value="00027" />
@ -414,7 +406,14 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1692451967069</updated> <updated>1692451967069</updated>
</task> </task>
<option name="localTasksCounter" value="75" /> <task id="LOCAL-00075" summary="19/08/23 - 20h30">
<created>1692470299774</created>
<option name="number" value="00075" />
<option name="presentableId" value="LOCAL-00075" />
<option name="project" value="LOCAL" />
<updated>1692470299774</updated>
</task>
<option name="localTasksCounter" value="76" />
<servers /> <servers />
</component> </component>
<component name="Vcs.Log.Tabs.Properties"> <component name="Vcs.Log.Tabs.Properties">
@ -429,7 +428,6 @@
</option> </option>
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<MESSAGE value="24/07/23 - 17h" />
<MESSAGE value="25/07/23 - 21h" /> <MESSAGE value="25/07/23 - 21h" />
<MESSAGE value="26/07/23 - 23h" /> <MESSAGE value="26/07/23 - 23h" />
<MESSAGE value="27/07/23 - 23h" /> <MESSAGE value="27/07/23 - 23h" />
@ -454,6 +452,7 @@
<MESSAGE value="17/08/23 - 17h" /> <MESSAGE value="17/08/23 - 17h" />
<MESSAGE value="18/08/23 - 17h30" /> <MESSAGE value="18/08/23 - 17h30" />
<MESSAGE value="19/08/23 - 15h30" /> <MESSAGE value="19/08/23 - 15h30" />
<option name="LAST_COMMIT_MESSAGE" value="19/08/23 - 15h30" /> <MESSAGE value="19/08/23 - 20h30" />
<option name="LAST_COMMIT_MESSAGE" value="19/08/23 - 20h30" />
</component> </component>
</project> </project>

View File

@ -78,7 +78,7 @@ def AddStagiairetoClass(diction):
mydata['session_id'] = str(diction['session_id']).strip() mydata['session_id'] = str(diction['session_id']).strip()
session_id = str(diction['session_id']).strip() session_id = str(diction['session_id']).strip()
"""
mytoken = "" mytoken = ""
if ("token" in diction.keys()): if ("token" in diction.keys()):
if diction['token']: if diction['token']:
@ -89,8 +89,8 @@ def AddStagiairetoClass(diction):
if (partner_recid is False): if (partner_recid is False):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer les données du partenaire ") mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer les données du partenaire ")
return False, "Impossible de recuperer les données du partenaire " return False, "Impossible de recuperer les données du partenaire "
"""
mydata['partner_owner_recid'] = str(partner_recid)
""" """
Recuperation des info de la session de formation Recuperation des info de la session de formation
""" """
@ -105,10 +105,7 @@ def AddStagiairetoClass(diction):
""" """
new_price = "-1" # 0 ==> par defaut new_price = "-1" # 0 ==> par defaut
for tmp_val in MYSY_GV.dbname['session_formation'].find({"code_session":str(session_id), for tmp_val in MYSY_GV.dbname['session_formation'].find({"_id":ObjectId(str(session_id)), 'valide':'1' }):
'class_internal_url': str(
diction['class_internal_url']), 'valide':'1'
}):
mydata['date_du'] = tmp_val['date_debut'] mydata['date_du'] = tmp_val['date_debut']
mydata['date_au'] = tmp_val['date_fin'] mydata['date_au'] = tmp_val['date_fin']
@ -219,8 +216,8 @@ def AddStagiairetoClass(diction):
## Verification si cette adresse n'est pas deja inscrite à cette session ## Verification si cette adresse n'est pas deja inscrite à cette session
# print(" myquery pr demo_account = " + str(myquery)) # print(" myquery pr demo_account = " + str(myquery))
tmp = coll_inscription.count_documents({'email':str(mydata['email']), tmp = coll_inscription.count_documents({'email':str(mydata['email']),
'session_id':str( mydata['session_id']), 'session_id':ObjectId(str( mydata['session_id'])),
'class_internal_url':str(mydata['class_internal_url'])}) })
if( tmp > 0 ) : if( tmp > 0 ) :
mycommon.myprint( mycommon.myprint(
@ -230,9 +227,25 @@ def AddStagiairetoClass(diction):
return False, "Impossible de créer le stagiaire. l'adresse email "+str(mydata['email'])\ return False, "Impossible de créer le stagiaire. l'adresse email "+str(mydata['email'])\
+" est deja inscrite à cette session de formation " +" est deja inscrite à cette session de formation "
ret_val = coll_inscription.insert_one(mydata)
inserted_id = ret_val.inserted_id """
Un email ne pouvant s'inscrire qu'a une seule session_id; on fait un usert
"""
ret_val = MYSY_GV.dbname['inscription'].find_one_and_update(
{'session_id': str(mydata['session_id']), 'email': str(mydata['email']),},
{"$set": mydata},
return_document=ReturnDocument.AFTER,
upsert=True,
)
if (ret_val is None):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible d'ajouter la participant ")
return False, " Impossible d'ajouter la participant "
#ret_val = coll_inscription.insert_one(mydata)
inserted_id = ret_val['_id']
if( inserted_id ): if( inserted_id ):
# Le stagaire a bien ete inseré, on declenche l'envoi des emaisl # Le stagaire a bien ete inseré, on declenche l'envoi des emaisl
print(" ### l'inscription est ok, il faut declenché l'envoi des email") print(" ### l'inscription est ok, il faut declenché l'envoi des email")
@ -420,6 +433,31 @@ def UpdateStagiairetoClass(diction):
if ("client_rattachement_id" in diction.keys()): if ("client_rattachement_id" in diction.keys()):
mydata['client_rattachement_id'] = str(diction['client_rattachement_id']).strip() mydata['client_rattachement_id'] = str(diction['client_rattachement_id']).strip()
# ici recup des infos de la session
local_query = {'_id': ObjectId(str(mysession_id)), 'valide': '1'}
print("### local_query = " + str(local_query))
local_tmp_session_count = MYSY_GV.dbname['session_formation'].count_documents(local_query)
if (local_tmp_session_count <= 0):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Aucune session de formation pour " + str(local_query))
return False, "Impossible de mettre à jour le stagiaire, Cette session de formation n'est pas valide "
if (local_tmp_session_count > 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - Plusieurs session existent pour ce code sessions " + str(
local_query))
return False, "Impossible de mettre à jour le stagiaire, Cette session de formation n'est pas valide (2) "
local_tmp_session_data = MYSY_GV.dbname['session_formation'].find_one(local_query)
"""
update de 20/08/23 :
Vu qu'on autorise maintenant le changement de session, alors pour parer à une eventellement changement de sessio
pour une affectation a une session appartenant à une autre formation,
on va ecraser le 'class_internal_url' de la collection 'inscription' avec celui de la collection 'session_formation'
"""
mydata['class_internal_url'] = str(local_tmp_session_data['class_internal_url']).strip()
""" """
Pour gerer la date de validation, differemment d'une simple mise à jour, Pour gerer la date de validation, differemment d'une simple mise à jour,
@ -487,20 +525,8 @@ def UpdateStagiairetoClass(diction):
lms_class_code = local_tmp_myclass['lms_class_code'] lms_class_code = local_tmp_myclass['lms_class_code']
# ici recup des infos de la session
local_query = {'code_session':str(mysession_id), 'class_internal_url':str(diction['class_internal_url']).strip(), 'valide':'1'}
print("### local_query = "+str(local_query))
local_tmp_session_count = MYSY_GV.dbname['session_formation'].count_documents(local_query)
if( local_tmp_session_count <= 0 ):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Aucune session de formation pour "+str(local_query))
return False, "Impossible de mettre à jour le stagiaire, Cette session de formation n'est pas valide "
if (local_tmp_session_count > 1):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Plusieurs session existent pour ce code sessions " + str(local_query))
return False, "Impossible de mettre à jour le stagiaire, Cette session de formation n'est pas valide (2) "
if ( diction['status'] == "1" ): if ( diction['status'] == "1" ):
@ -1460,7 +1486,7 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
# Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste # Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
# field_list. # field_list.
''' '''
field_list = ['token','session_id', 'class_internal_url'] field_list = ['token', 'code_session', 'class_internal_url']
incom_keys = diction.keys() incom_keys = diction.keys()
for val in incom_keys: for val in incom_keys:
if val not in field_list: if val not in field_list:
@ -1471,7 +1497,7 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, 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 On controle que les champs obligatoires sont presents dans la liste
''' '''
field_list_obligatoire = ['token', 'session_id', 'class_internal_url'] field_list_obligatoire = ['token', 'code_session', 'class_internal_url']
for val in field_list_obligatoire: for val in field_list_obligatoire:
if val not in diction: if val not in diction:
@ -1483,16 +1509,23 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
if diction['token']: if diction['token']:
my_token = diction['token'] my_token = diction['token']
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 participants ")
return False, " Les information de connexion sont incorrectes. Impossible d'importer la liste des participants"
# Verifier la validité du token # Verifier la validité du token
retval = mycommon.check_partner_token_validity("", my_token) retval = mycommon.check_partner_token_validity("", my_token)
if retval is False: if retval is False:
return "Err_Connexion", " La session de connexion n'est pas valide" return "Err_Connexion", " La session de connexion n'est pas valide"
session_id = ""
if ("session_id" in diction.keys()): code_session = ""
if diction['session_id']: if ("code_session" in diction.keys()):
session_id = diction['session_id'] if diction['code_session']:
code_session = diction['code_session']
class_internal_url = "" class_internal_url = ""
if ("class_internal_url" in diction.keys()): if ("class_internal_url" in diction.keys()):
@ -1501,7 +1534,8 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
# Verification de l'existance de la formation (class_internal_url) # Verification de l'existance de la formation (class_internal_url)
tmp_count = MYSY_GV.dbname['myclass'].count_documents({'internal_url': str(class_internal_url), 'valide': '1', 'locked':'0'}) tmp_count = MYSY_GV.dbname['myclass'].count_documents({'internal_url': str(class_internal_url), 'valide': '1',
'locked':'0', 'partner_owner_recid':str(partner_recid)})
# logging.info(" TMP = "+str(tmp)) # logging.info(" TMP = "+str(tmp))
if (tmp_count <= 0): if (tmp_count <= 0):
@ -1509,17 +1543,23 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
return False, " Cette formation n'est pas valide " return False, " Cette formation n'est pas valide "
## Verification de l'existance de session et recuperation de de "_id"
if(len(str(session_id).strip()) <= 0 ): session_count = MYSY_GV.dbname['session_formation'].count_documents({'class_internal_url':str(class_internal_url), 'valide': '1',
'code_session':str(code_session), 'partner_owner_recid':str(partner_recid)})
if (session_count <= 0):
mycommon.myprint( mycommon.myprint(
str(inspect.stack()[0][3]) + " La session de formation est vide : Impossible d'importer la liste des participants ") str(inspect.stack()[0][3]) + " -" + str(code_session) + " : ' Cette session n'est pas valide ")
return False, " La session de formation est incorrecte. Impossible d'importer la liste des participants" return False, " La session de formation "+str(code_session)+" n'est pas valide "
if (session_count > 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " -" + str(code_session) + " : ' Cette session existe en double ")
return False, " La session de formation "+str(code_session)+" n'est est incohérente "
session_data = MYSY_GV.dbname['session_formation'].find_one(
{'class_internal_url': str(class_internal_url), 'valide': '1',
'code_session': str(code_session), 'partner_owner_recid': str(partner_recid)}, {'_id':1})
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 participants ")
return False, " Les information de connexion sont incorrectes. Impossible d'importer la liste des participants"
status, saved_file = mycommon.Upload_Save_CSV_File(file, Folder) status, saved_file = mycommon.Upload_Save_CSV_File(file, Folder)
if (status == False): if (status == False):
@ -1584,7 +1624,7 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
mydata['employeur'] = str(df['employeur'].values[n]) mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n]) mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n]) mydata['email'] = str(df['email'].values[n])
mydata['session_id'] = str(session_id) mydata['session_id'] = str(session_data['_id'])
mydata['token'] = str(my_token) mydata['token'] = str(my_token)
modefinancement = "" modefinancement = ""
@ -1631,34 +1671,36 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
""" """
client_rattachement_email = "" client_rattachement_email = ""
if ("client_rattachement_email" in df.keys()): if ("client_rattachement_email" in df.keys()):
if (str(df['client_rattachement_email'].values[n])): if (str(df['client_rattachement_email'].values[n]) and str(df['client_rattachement_email'].values[n]) != "nan" ):
client_rattachement_email = str(df['client_rattachement_email'].values[n]) client_rattachement_email = str(df['client_rattachement_email'].values[n])
client_rattachement_nom = "" client_rattachement_nom = ""
if ("client_rattachement_nom" in df.keys()): if ("client_rattachement_nom" in df.keys() and str(df['client_rattachement_nom'].values[n]) != "nan"):
if (str(df['client_rattachement_nom'].values[n])): if (str(df['client_rattachement_nom'].values[n])):
client_rattachement_nom = str(df['client_rattachement_nom'].values[n]) client_rattachement_nom = str(df['client_rattachement_nom'].values[n])
local_client_retval_qry = {'email':str(client_rattachement_email), 'nom':str(client_rattachement_nom), 'valide':'1', if( client_rattachement_email and client_rattachement_nom ):
'locked':'0', 'partner_recid' :str(partner_recid)} local_client_retval_qry = {'email':str(client_rattachement_email), 'nom':str(client_rattachement_nom), 'valide':'1',
local_client_retval_count = MYSY_GV.dbname['partner_client'].count_documents(local_client_retval_qry) 'locked':'0', 'partner_recid' :str(partner_recid)}
if( local_client_retval_count > 1 ): local_client_retval_count = MYSY_GV.dbname['partner_client'].count_documents(local_client_retval_qry)
mycommon.myprint(
str(inspect.stack()[0][3]) +"Ligne : "+str(n) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email))
return False, "Ligne : "+str(n) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email)
if (local_client_retval_count < 1): if( local_client_retval_count > 1 ):
mycommon.myprint( mycommon.myprint(
str(inspect.stack()[0][3]) + "Ligne : "+str(n) +". Aucun client ne repond aux critères de nom :" + str( str(inspect.stack()[0][3]) +"Ligne : "+str(n) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email))
client_rattachement_nom) + " et email : " + str(client_rattachement_email)) return False, "Ligne : "+str(n) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email)
return False, "Ligne : "+str(n) +". Aucun client ne repond aux critères de nom :" + str(
client_rattachement_nom) + " et email : " + str(client_rattachement_email)
local_client_retval_data = MYSY_GV.dbname['partner_client'].find_one(local_client_retval_qry) if (local_client_retval_count < 1):
if( local_client_retval_data is not None ): mycommon.myprint(
mydata['client_rattachement_id'] = local_client_retval_data['_id'] str(inspect.stack()[0][3]) + "Ligne : "+str(n) +". Aucun client ne repond aux critères de nom :" + str(
client_rattachement_nom) + " et email : " + str(client_rattachement_email))
return False, "Ligne : "+str(n) +". Aucun client ne repond aux critères de nom :" + str(
client_rattachement_nom) + " et email : " + str(client_rattachement_email)
local_client_retval_data = MYSY_GV.dbname['partner_client'].find_one(local_client_retval_qry)
if( local_client_retval_data is not None ):
mydata['client_rattachement_id'] = local_client_retval_data['_id']
mydata['status'] = str(df['status'].values[n]).strip() mydata['status'] = str(df['status'].values[n]).strip()
@ -1821,16 +1863,64 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
mydata['employeur'] = str(df['employeur'].values[n]) mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n]) mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n]) mydata['email'] = str(df['email'].values[n])
mydata['session_id'] = str(df['code_session'].values[n])
mydata['token'] = str(my_token) mydata['token'] = str(my_token)
"""
Recuperation de l'internal url de la formation a partir de la cle
- formation code externe
- partner_owner_recid
"""
qry = {'external_code':str(class_external_code), 'valide':'-51', 'locked':'0', 'partner_owner_recid':str(partner_recid)}
print(" ### qry = ", qry)
myclass_data_count = MYSY_GV.dbname['myclass'].count_documents({'external_code':str(class_external_code), 'valide':'1', 'locked':'0',
'partner_owner_recid':str(partner_recid)})
if( myclass_data_count != 1 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + "Ligne : " + str(
n + 2) + ": Le code externe de la formation et le code de la session ne correspondent pas .")
return False, "Ligne : " + str(
n + 2) + ": Le code externe de la formation et le code de la session ne correspondent pas."
myclass_data = MYSY_GV.dbname['myclass'].find_one({'external_code':str(class_external_code), 'valide':'1', 'locked':'0',
'partner_owner_recid':str(partner_recid)})
mysession_count_qry = {'class_internal_url': str(myclass_data['internal_url']), 'valide': '1',
'partner_owner_recid': str(partner_recid), 'code_session':str(df['code_session'].values[n]) }
print(" ### mysession_count_qry = ", qry)
mysession_count = MYSY_GV.dbname['session_formation'].count_documents(mysession_count_qry)
if( mysession_count != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + "Ligne : " + str(
n + 2) + ": Le code externe de la formation et le code de la session ne correspondent pas (2).")
return False, "Ligne : " + str(
n + 2) + ": Le code externe de la formation et le code de la session ne correspondent pas (2)."
mysession_data = MYSY_GV.dbname['session_formation'].find_one(mysession_count_qry)
mydata['session_id'] = str(mysession_data['_id'])
mydata['class_internal_url'] = str(mysession_data['class_internal_url'])
"""
Recuperation de l''_id' de la session à partir de la clé
- formation code externe
- code_session
- partner_owner_recid
"""
""" """
On verifie que le code de le session et le l'external class code correspondent. On verifie que le code de le session et le l'external class code correspondent.
En gros : que la formation en question a bien une session du meme code En gros : que la formation en question a bien une session du meme code
""" """
check_class_session_query = [{'$match': {'code_session':str(df['code_session'].values[n])}}, """check_class_session_query = [{'$match': {'code_session':str(df['code_session'].values[n])}},
{'$lookup': {'$lookup':
{ {
'from': 'myclass', 'from': 'myclass',
@ -1856,9 +1946,9 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
str(inspect.stack()[0][3]) + "Ligne : " + str( str(inspect.stack()[0][3]) + "Ligne : " + str(
n+2) + ": Le code externe de la formation et le code de la session ne correspondent pas .") n+2) + ": Le code externe de la formation et le code de la session ne correspondent pas .")
return False, "Ligne : " + str(n+2) + ": Le code externe de la formation et le code de la session ne correspondent pas." return False, "Ligne : " + str(n+2) + ": Le code externe de la formation et le code de la session ne correspondent pas."
"""
mydata['class_internal_url'] = real_class_internal_url
modefinancement = "" modefinancement = ""
@ -1905,35 +1995,35 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
""" """
client_rattachement_email = "" client_rattachement_email = ""
if ("client_rattachement_email" in df.keys()): if ("client_rattachement_email" in df.keys()):
if (str(df['client_rattachement_email'].values[n])): if (str(df['client_rattachement_email'].values[n]) and str(df['client_rattachement_email'].values[n]) != "nan"):
client_rattachement_email = str(df['client_rattachement_email'].values[n]) client_rattachement_email = str(df['client_rattachement_email'].values[n])
client_rattachement_nom = "" client_rattachement_nom = ""
if ("client_rattachement_nom" in df.keys()): if ("client_rattachement_nom" in df.keys()):
if (str(df['client_rattachement_nom'].values[n])): if (str(df['client_rattachement_nom'].values[n]) and str(df['client_rattachement_nom'].values[n]) != "nan" ):
client_rattachement_nom = str(df['client_rattachement_nom'].values[n]) client_rattachement_nom = str(df['client_rattachement_nom'].values[n])
if (client_rattachement_email and client_rattachement_nom):
local_client_retval_qry = {'email':str(client_rattachement_email), 'nom':str(client_rattachement_nom),
'valide':'1', 'locked':'0', 'partner_recid' :str(partner_recid)}
local_client_retval_qry = {'email':str(client_rattachement_email), 'nom':str(client_rattachement_nom), local_client_retval_count = MYSY_GV.dbname['partner_client'].count_documents(local_client_retval_qry)
'valide':'1', 'locked':'0', 'partner_recid' :str(partner_recid)}
local_client_retval_count = MYSY_GV.dbname['partner_client'].count_documents(local_client_retval_qry) if( local_client_retval_count > 1 ):
mycommon.myprint(
str(inspect.stack()[0][3]) +"Ligne : "+str(n+2) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email))
return False, "Ligne : "+str(n+2) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email)
if( local_client_retval_count > 1 ): if (local_client_retval_count < 1):
mycommon.myprint( mycommon.myprint(
str(inspect.stack()[0][3]) +"Ligne : "+str(n+2) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email)) str(inspect.stack()[0][3]) + "Ligne : "+str(n+2) +". Aucun client ne repond aux critères de nom :" + str(
return False, "Ligne : "+str(n+2) +". Plusieurs clients correspondent aux critère de nom :"+str(client_rattachement_nom)+" et email : "+str(client_rattachement_email) client_rattachement_nom) + " et email : " + str(client_rattachement_email))
return False, "Ligne : "+str(n+2) +". Aucun client ne repond aux critères de nom :" + str(
client_rattachement_nom) + " et email : " + str(client_rattachement_email)
if (local_client_retval_count < 1): local_client_retval_data = MYSY_GV.dbname['partner_client'].find_one(local_client_retval_qry)
mycommon.myprint( if( local_client_retval_data is not None ):
str(inspect.stack()[0][3]) + "Ligne : "+str(n+2) +". Aucun client ne repond aux critères de nom :" + str( mydata['client_rattachement_id'] = local_client_retval_data['_id']
client_rattachement_nom) + " et email : " + str(client_rattachement_email))
return False, "Ligne : "+str(n+2) +". Aucun client ne repond aux critères de nom :" + str(
client_rattachement_nom) + " et email : " + str(client_rattachement_email)
local_client_retval_data = MYSY_GV.dbname['partner_client'].find_one(local_client_retval_qry)
if( local_client_retval_data is not None ):
mydata['client_rattachement_id'] = local_client_retval_data['_id']
mydata['status'] = str(df['status'].values[n]).strip() mydata['status'] = str(df['status'].values[n]).strip()
@ -3761,12 +3851,9 @@ def Get_Statgaire_List_Partner_with_filter(diction):
if ("nom" in diction.keys()): if ("nom" in diction.keys()):
filt_nom = {'nom': {'$regex': str(diction['nom']), "$options": "i"}} filt_nom = {'nom': {'$regex': str(diction['nom']), "$options": "i"}}
filt_class_partner_recid = {'partner_owner_recid': str(partner_recid)} filt_class_partner_recid = {'partner_owner_recid': str(partner_recid)}
query = [{'$match':{ '$and' : [ filt_class_internal_url, filt_session_id, filt_email, filt_nom] } }, query = [{'$match':{ '$and' : [ filt_class_internal_url, filt_session_id, filt_email, filt_nom, {'partner_owner_recid':str(partner_recid)}] } },
{'$lookup': {'$lookup':
{ {
'from': 'myclass', 'from': 'myclass',
@ -3825,14 +3912,18 @@ def Get_Statgaire_List_Partner_with_filter(diction):
val['domaine'] = retVal['myclass_collection'][0]['domaine'] val['domaine'] = retVal['myclass_collection'][0]['domaine']
# Recuperation des informations de la session # Recuperation des informations de la session
local_qry = {'class_internal_url':str(retVal['class_internal_url']), 'code_session':str(retVal['session_id']), 'valide':'1'} local_qry = {'_id':ObjectId(retVal['session_id']), 'valide':'1'}
count_session = MYSY_GV.dbname['session_formation'].count_documents(local_qry) count_session = MYSY_GV.dbname['session_formation'].count_documents(local_qry)
client_rattachement_id = "" client_rattachement_id = ""
client_rattachement_nom = "" client_rattachement_nom = ""
# Si il a un client rattacher, recuperation des information du client # Si il a un client rattacher, recuperation des information du client
#print(" ### retVal = ", retVal )
if( "client_rattachement_id" in retVal.keys()): if( "client_rattachement_id" in retVal.keys()):
if( retVal['client_rattachement_id']): if( retVal['client_rattachement_id'] and str(retVal['client_rattachement_id'] ) != 'undefined'):
client_retval = MYSY_GV.dbname['partner_client'].find_one({'id':ObjectId( retVal['client_rattachement_id']), client_retval = MYSY_GV.dbname['partner_client'].find_one({'id':ObjectId( retVal['client_rattachement_id']),
'valide':'1', 'locked':'0'}) 'valide':'1', 'locked':'0'})
@ -3854,8 +3945,7 @@ def Get_Statgaire_List_Partner_with_filter(diction):
#qry2 = {'class_internal_url':str(retVal['class_internal_url']), 'code_session':str(retVal['session_id']), 'valide':'1'} #qry2 = {'class_internal_url':str(retVal['class_internal_url']), 'code_session':str(retVal['session_id']), 'valide':'1'}
#print(" ### qry 2 =", qry2) #print(" ### qry 2 =", qry2)
session_retval = MYSY_GV.dbname['session_formation'].find_one({'class_internal_url':str(retVal['class_internal_url']), session_retval = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(retVal['session_id'])), 'valide':'1'})
'code_session':str(retVal['session_id']), 'valide':'1'})
if ("date_debut" in session_retval.keys()): if ("date_debut" in session_retval.keys()):

File diff suppressed because it is too large Load Diff

View File

@ -108,6 +108,15 @@ def Add_Update_SessionFormation(diction):
return False, "Impossible de recuperer les données du partenaire " return False, "Impossible de recuperer les données du partenaire "
"""
update du 20/08/23 :
on ajouter un champs 'owner_recid' a la session.
en effet 2 partenaire peuvent avoir exactement la meme formation et les memes code session.
il faut arriver à les distinguer tout de meme
"""
mydata['partner_owner_recid'] = str(partner_recid)
if ("date_debut" in diction.keys()): if ("date_debut" in diction.keys()):
mydata['date_debut'] = diction['date_debut'] mydata['date_debut'] = diction['date_debut']
@ -421,7 +430,7 @@ def GetSessionFormation(diction):
coll_session = MYSY_GV.dbname['session_formation'] coll_session = MYSY_GV.dbname['session_formation']
myquery = [{'$match':{'code_session':code_session, 'class_internal_url':class_internal_url}}, myquery = [{'$match':{'code_session':code_session, 'class_internal_url':class_internal_url, 'partner_owner_recid':str(partner_recid)}},
{'$lookup': {'$lookup':
{ {
'from': 'myclass', 'from': 'myclass',
@ -466,7 +475,7 @@ d'une formation données ET les sessions "on demande"
def GetActiveSessionFormation_List(diction): def GetActiveSessionFormation_List(diction):
try: try:
field_list = ['class_internal_url'] field_list = ['token', 'class_internal_url']
incom_keys = diction.keys() incom_keys = diction.keys()
for val in incom_keys: for val in incom_keys:
if val not in field_list: if val not in field_list:
@ -477,13 +486,18 @@ def GetActiveSessionFormation_List(diction):
""" """
Verification de la liste des champs obligatoires Verification de la liste des champs obligatoires
""" """
field_list_obligatoire = [ 'class_internal_url', ] field_list_obligatoire = [ 'token', 'class_internal_url', ]
for val in field_list_obligatoire: for val in field_list_obligatoire:
if val not in diction: if val not in diction:
mycommon.myprint( mycommon.myprint(
str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ") str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ")
return False, "Impossible de recuperer la liste des session de formation" return False, "Impossible de recuperer la liste des session de formation"
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
# Recuperation du recid du partner # Recuperation du recid du partner
mydata = {} mydata = {}
@ -495,6 +509,7 @@ def GetActiveSessionFormation_List(diction):
coll_session = MYSY_GV.dbname['session_formation'] coll_session = MYSY_GV.dbname['session_formation']
myquery = {} myquery = {}
myquery['class_internal_url'] = class_internal_url myquery['class_internal_url'] = class_internal_url
myquery['partner_owner_recid'] = str(my_partner['recid'])
myquery['valide'] = "1" myquery['valide'] = "1"
myquery['session_status'] = "true" myquery['session_status'] = "true"
@ -539,7 +554,7 @@ Qu'elles soient cloturées ou pas."""
def GetAllValideSessionFormation_List(diction): def GetAllValideSessionFormation_List(diction):
try: try:
field_list = ['class_internal_url'] field_list = ['token', 'class_internal_url']
incom_keys = diction.keys() incom_keys = diction.keys()
for val in incom_keys: for val in incom_keys:
if val not in field_list: if val not in field_list:
@ -550,7 +565,7 @@ def GetAllValideSessionFormation_List(diction):
""" """
Verification de la liste des champs obligatoires Verification de la liste des champs obligatoires
""" """
field_list_obligatoire = ['class_internal_url', ] field_list_obligatoire = ['token', 'class_internal_url', ]
for val in field_list_obligatoire: for val in field_list_obligatoire:
if val not in diction: if val not in diction:
mycommon.myprint( mycommon.myprint(
@ -560,6 +575,10 @@ def GetAllValideSessionFormation_List(diction):
# Recuperation du recid du partner # Recuperation du recid du partner
mydata = {} mydata = {}
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
class_internal_url = "" class_internal_url = ""
if ("class_internal_url" in diction.keys()): if ("class_internal_url" in diction.keys()):
if diction['class_internal_url']: if diction['class_internal_url']:
@ -568,6 +587,7 @@ def GetAllValideSessionFormation_List(diction):
coll_session = MYSY_GV.dbname['session_formation'] coll_session = MYSY_GV.dbname['session_formation']
myquery = {} myquery = {}
myquery['class_internal_url'] = class_internal_url myquery['class_internal_url'] = class_internal_url
myquery['partner_owner_recid'] = str(my_partner['recid'])
myquery['valide'] = "1" myquery['valide'] = "1"
#print(" ##### myquery = "+str(myquery)) #print(" ##### myquery = "+str(myquery))
@ -627,7 +647,7 @@ def GetAllValideSessionPartner_List(diction):
filt_class_partner_recid = {'partner_owner_recid': str(my_partner['recid'])} filt_class_partner_recid = {'partner_owner_recid': str(my_partner['recid'])}
query = [ query = [{'$match': {'partner_owner_recid':str(my_partner['recid'])}},
{'$lookup': {'$lookup':
{ {
'from': 'myclass', 'from': 'myclass',
@ -777,7 +797,7 @@ def GetAllValideSessionPartner_List_filter_like(diction):
coll_session = MYSY_GV.dbname['session_formation'] coll_session = MYSY_GV.dbname['session_formation']
query = [{'$match':filt_code_session }, query = [ {'$match':{ '$and' : [ filt_code_session,{'partner_owner_recid':str(my_partner['recid'])}] }} ,
{'$lookup': {'$lookup':
{ {
'from': 'myclass', 'from': 'myclass',
@ -1262,9 +1282,21 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
diction_for_session_id['code_postal'] = str(mydata['code_postal'] ) diction_for_session_id['code_postal'] = str(mydata['code_postal'] )
diction_for_session_id['adresse'] = str(mydata['adresse']) diction_for_session_id['adresse'] = str(mydata['adresse'])
"""
Verifier si la session existe deja en base, si c'est le cas recuperer le '_id'
la clé pour verifier l'existance d'une session est :
- code_session
- class_internal_url
- partner_owner_recid
"""
existing_session = MYSY_GV.dbname['session_formation'].find_one(
{'code_session': str(local_code_session), 'class_internal_url': str(class_internal_url),
'partner_owner_recid': str(partner_recid), 'valide': '1'})
mydata['formation_session_id'] = str(mydata['code_session']) if (existing_session is not None):
if ('_id' in existing_session.keys()):
mydata['session_id'] = existing_session['_id']
clean_dict = {k: mydata[k] for k in mydata if (str(mydata[k]) != "nan")} clean_dict = {k: mydata[k] for k in mydata if (str(mydata[k]) != "nan")}
@ -1497,9 +1529,9 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
if( count_class != 1 ): if( count_class != 1 ):
mycommon.myprint( mycommon.myprint(
str(inspect.stack()[0][3]) + " Le champs 'code_exyer' de ligne " + str( str(inspect.stack()[0][3]) + " Le champs 'code_externe' de ligne " + str(
n + 2) + " ne correspond pas à une formation valide.") n + 2) + " ne correspond pas à une formation valide.")
return False, " Le champs 'code_exyer' de ligne " + str( return False, " Le champs 'code_externe' de ligne " + str(
n + 2) + " ne correspond pas à une formation valide." n + 2) + " ne correspond pas à une formation valide."
class_from_external_code = MYSY_GV.dbname['myclass'].find({'external_code':str(external_code), 'valide':'1', class_from_external_code = MYSY_GV.dbname['myclass'].find({'external_code':str(external_code), 'valide':'1',
@ -1519,8 +1551,8 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
Ceci est lié au fait que c'est une formation qui est sur la plateforme LMS Ceci est lié au fait que c'est une formation qui est sur la plateforme LMS
""" """
if ("lms_class_code" in class_from_external_code[0].keys()): if ("lms_class_code" in class_from_external_code[0].keys()):
if (str(class_from_external_code[0]['code_session'].values[n])): if ( class_from_external_code[0]['lms_class_code']):
formation_data_lms_class_code = str(class_from_external_code[0]['code_session'].values[n]) formation_data_lms_class_code = str(class_from_external_code[0]['lms_class_code'])
mydata['lms_class_code'] = formation_data_lms_class_code mydata['lms_class_code'] = formation_data_lms_class_code
@ -1690,7 +1722,20 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict
diction_for_session_id['code_postal'] = str(mydata['code_postal']) diction_for_session_id['code_postal'] = str(mydata['code_postal'])
diction_for_session_id['adresse'] = str(mydata['adresse']) diction_for_session_id['adresse'] = str(mydata['adresse'])
mydata['formation_session_id'] = str(mydata['code_session']) """
Verifier si la session existe deja en base, si c'est le cas recuperer le '_id'
la clé pour verifier l'existance d'une session est :
- code_session
- class_internal_url
- partner_owner_recid
"""
existing_session = MYSY_GV.dbname['session_formation'].find_one({'code_session':str(local_code_session), 'class_internal_url':str(class_internal_url),
'partner_owner_recid':str(partner_recid), 'valide':'1'})
if( existing_session is not None):
if( '_id' in existing_session.keys()):
mydata['session_id'] = existing_session['_id']
clean_dict = {k: mydata[k] for k in mydata if (str(mydata[k]) != "nan")} clean_dict = {k: mydata[k] for k in mydata if (str(mydata[k]) != "nan")}

View File

@ -2901,7 +2901,7 @@ def GetAttendeeDetail_perSession(diction):
{'$expr': {'$expr':
{'$and': {'$and':
[ [
{'$eq': ["$code_session", "$$session_id"]}, {'$eq': ['$_id', { '$toObjectId': '$$session_id' }]},
{'$eq': ["$class_internal_url", "$$class_internal_url"]}, {'$eq': ["$class_internal_url", "$$class_internal_url"]},
{'$eq': ["$valide", "1"]} {'$eq': ["$valide", "1"]}
] ]
@ -2927,7 +2927,7 @@ def GetAttendeeDetail_perSession(diction):
for local_Insc_retval in MYSY_GV.dbname['inscription'].aggregate(pipe_qry) : for local_Insc_retval in MYSY_GV.dbname['inscription'].aggregate(pipe_qry) :
print(" ### local_Insc_retval == ", local_Insc_retval) print(" ### local_Insc_retval laa== ", local_Insc_retval)
if( local_Insc_retval is None): if( local_Insc_retval is None):
myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le recid du partenaire (2)") myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le recid du partenaire (2)")
@ -2939,6 +2939,10 @@ def GetAttendeeDetail_perSession(diction):
if ("session_id" in local_Insc_retval.keys()): if ("session_id" in local_Insc_retval.keys()):
my_retrun_dict['session_id'] = local_Insc_retval['session_id'] my_retrun_dict['session_id'] = local_Insc_retval['session_id']
if ("code_session" in local_Insc_retval['inscription_collectoin'][0].keys()):
my_retrun_dict['code_session'] = str(local_Insc_retval['inscription_collectoin'][0]['code_session'])
if ("date_debut" in local_Insc_retval['inscription_collectoin'][0].keys()): if ("date_debut" in local_Insc_retval['inscription_collectoin'][0].keys()):
my_retrun_dict['date_du'] = str(local_Insc_retval['inscription_collectoin'][0]['date_debut'])[0:10] my_retrun_dict['date_du'] = str(local_Insc_retval['inscription_collectoin'][0]['date_debut'])[0:10]
@ -3006,8 +3010,8 @@ def GetAttendeeDetail_perSession(diction):
my_retrun_dict['status'] = local_status my_retrun_dict['status'] = local_status
local_price = "" local_price = ""
if ("price" in local_Insc_retval['inscription_collectoin'][0].keys()): if ("price" in local_Insc_retval.keys()):
local_price = local_Insc_retval['inscription_collectoin'][0]['price'] local_price = local_Insc_retval['price']
my_retrun_dict['price'] = local_price my_retrun_dict['price'] = local_price
local_inscription_validation_date = "" local_inscription_validation_date = ""
@ -3034,8 +3038,7 @@ def GetAttendeeDetail_perSession(diction):
client_rattachement_id = "" client_rattachement_id = ""
client_rattachement_nom = "" client_rattachement_nom = ""
if ("client_rattachement_id" in local_Insc_retval.keys()): if ("client_rattachement_id" in local_Insc_retval.keys()):
if( local_Insc_retval['client_rattachement_id']): if( local_Insc_retval['client_rattachement_id'] and str(local_Insc_retval['client_rattachement_id']) != 'undefined' ):
local_client_retval_data = MYSY_GV.dbname['partner_client'].find_one({'_id': ObjectId(str(local_Insc_retval['client_rattachement_id'])), local_client_retval_data = MYSY_GV.dbname['partner_client'].find_one({'_id': ObjectId(str(local_Insc_retval['client_rattachement_id'])),
'valide': '1', 'locked': '0'}, {'_id':1, 'nom':1}) 'valide': '1', 'locked': '0'}, {'_id':1, 'nom':1})