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"?>
<project version="4">
<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$/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$/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" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -36,7 +35,7 @@
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&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 name="RunManager">
@ -71,13 +70,6 @@
<option name="presentableId" value="Default" />
<updated>1680804787304</updated>
</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">
<created>1685028085742</created>
<option name="number" value="00027" />
@ -414,7 +406,14 @@
<option name="project" value="LOCAL" />
<updated>1692451967069</updated>
</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 />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -429,7 +428,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="24/07/23 - 17h" />
<MESSAGE value="25/07/23 - 21h" />
<MESSAGE value="26/07/23 - 23h" />
<MESSAGE value="27/07/23 - 23h" />
@ -454,6 +452,7 @@
<MESSAGE value="17/08/23 - 17h" />
<MESSAGE value="18/08/23 - 17h30" />
<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>
</project>

View File

@ -78,7 +78,7 @@ def AddStagiairetoClass(diction):
mydata['session_id'] = str(diction['session_id']).strip()
session_id = str(diction['session_id']).strip()
"""
mytoken = ""
if ("token" in diction.keys()):
if diction['token']:
@ -89,8 +89,8 @@ def AddStagiairetoClass(diction):
if (partner_recid is False):
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 "
"""
mydata['partner_owner_recid'] = str(partner_recid)
"""
Recuperation des info de la session de formation
"""
@ -105,10 +105,7 @@ def AddStagiairetoClass(diction):
"""
new_price = "-1" # 0 ==> par defaut
for tmp_val in MYSY_GV.dbname['session_formation'].find({"code_session":str(session_id),
'class_internal_url': str(
diction['class_internal_url']), 'valide':'1'
}):
for tmp_val in MYSY_GV.dbname['session_formation'].find({"_id":ObjectId(str(session_id)), 'valide':'1' }):
mydata['date_du'] = tmp_val['date_debut']
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
# print(" myquery pr demo_account = " + str(myquery))
tmp = coll_inscription.count_documents({'email':str(mydata['email']),
'session_id':str( mydata['session_id']),
'class_internal_url':str(mydata['class_internal_url'])})
'session_id':ObjectId(str( mydata['session_id'])),
})
if( tmp > 0 ) :
mycommon.myprint(
@ -230,9 +227,25 @@ def AddStagiairetoClass(diction):
return False, "Impossible de créer le stagiaire. l'adresse email "+str(mydata['email'])\
+" 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 ):
# Le stagaire a bien ete inseré, on declenche l'envoi des emaisl
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()):
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,
@ -487,20 +525,8 @@ def UpdateStagiairetoClass(diction):
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" ):
@ -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
# field_list.
'''
field_list = ['token','session_id', 'class_internal_url']
field_list = ['token', 'code_session', 'class_internal_url']
incom_keys = diction.keys()
for val in incom_keys:
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,
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:
if val not in diction:
@ -1483,16 +1509,23 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
if 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
retval = mycommon.check_partner_token_validity("", my_token)
if retval is False:
return "Err_Connexion", " La session de connexion n'est pas valide"
session_id = ""
if ("session_id" in diction.keys()):
if diction['session_id']:
session_id = diction['session_id']
code_session = ""
if ("code_session" in diction.keys()):
if diction['code_session']:
code_session = diction['code_session']
class_internal_url = ""
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)
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))
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 "
if(len(str(session_id).strip()) <= 0 ):
## Verification de l'existance de session et recuperation de de "_id"
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(
str(inspect.stack()[0][3]) + " La session de formation est vide : Impossible d'importer la liste des participants ")
return False, " La session de formation est incorrecte. 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 "+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)
if (status == False):
@ -1584,7 +1624,7 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].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)
modefinancement = ""
@ -1631,34 +1671,36 @@ def AddStagiairetoClass_mass(file=None, Folder=None, diction=None):
"""
client_rattachement_email = ""
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_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])):
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',
'locked':'0', 'partner_recid' :str(partner_recid)}
local_client_retval_count = MYSY_GV.dbname['partner_client'].count_documents(local_client_retval_qry)
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)}
if( local_client_retval_count > 1 ):
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)
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) +". 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)
if( local_client_retval_count > 1 ):
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)
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']
if (local_client_retval_count < 1):
mycommon.myprint(
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()
@ -1821,16 +1863,64 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
mydata['employeur'] = str(df['employeur'].values[n])
mydata['telephone'] = str(df['telephone'].values[n])
mydata['email'] = str(df['email'].values[n])
mydata['session_id'] = str(df['code_session'].values[n])
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.
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':
{
'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(
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 = ""
@ -1905,35 +1995,35 @@ def AddStagiairetoClass_mass_for_many_session(file=None, Folder=None, diction=No
"""
client_rattachement_email = ""
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_nom = ""
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])
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),
'valide':'1', 'locked':'0', 'partner_recid' :str(partner_recid)}
local_client_retval_count = MYSY_GV.dbname['partner_client'].count_documents(local_client_retval_qry)
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 ):
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):
mycommon.myprint(
str(inspect.stack()[0][3]) + "Ligne : "+str(n+2) +". Aucun client ne repond aux critères de nom :" + str(
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):
mycommon.myprint(
str(inspect.stack()[0][3]) + "Ligne : "+str(n+2) +". Aucun client ne repond aux critères de nom :" + str(
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']
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()
@ -3761,12 +3851,9 @@ def Get_Statgaire_List_Partner_with_filter(diction):
if ("nom" in diction.keys()):
filt_nom = {'nom': {'$regex': str(diction['nom']), "$options": "i"}}
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':
{
'from': 'myclass',
@ -3825,14 +3912,18 @@ def Get_Statgaire_List_Partner_with_filter(diction):
val['domaine'] = retVal['myclass_collection'][0]['domaine']
# 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)
client_rattachement_id = ""
client_rattachement_nom = ""
# Si il a un client rattacher, recuperation des information du client
#print(" ### retVal = ", retVal )
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']),
'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'}
#print(" ### qry 2 =", qry2)
session_retval = MYSY_GV.dbname['session_formation'].find_one({'class_internal_url':str(retVal['class_internal_url']),
'code_session':str(retVal['session_id']), 'valide':'1'})
session_retval = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(retVal['session_id'])), 'valide':'1'})
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 "
"""
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()):
mydata['date_debut'] = diction['date_debut']
@ -421,7 +430,7 @@ def GetSessionFormation(diction):
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':
{
'from': 'myclass',
@ -466,7 +475,7 @@ d'une formation données ET les sessions "on demande"
def GetActiveSessionFormation_List(diction):
try:
field_list = ['class_internal_url']
field_list = ['token', 'class_internal_url']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
@ -477,13 +486,18 @@ def GetActiveSessionFormation_List(diction):
"""
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:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ")
return False, "Impossible de 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
mydata = {}
@ -495,6 +509,7 @@ def GetActiveSessionFormation_List(diction):
coll_session = MYSY_GV.dbname['session_formation']
myquery = {}
myquery['class_internal_url'] = class_internal_url
myquery['partner_owner_recid'] = str(my_partner['recid'])
myquery['valide'] = "1"
myquery['session_status'] = "true"
@ -539,7 +554,7 @@ Qu'elles soient cloturées ou pas."""
def GetAllValideSessionFormation_List(diction):
try:
field_list = ['class_internal_url']
field_list = ['token', 'class_internal_url']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
@ -550,7 +565,7 @@ def GetAllValideSessionFormation_List(diction):
"""
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:
if val not in diction:
mycommon.myprint(
@ -560,6 +575,10 @@ def GetAllValideSessionFormation_List(diction):
# Recuperation du recid du partner
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 = ""
if ("class_internal_url" in diction.keys()):
if diction['class_internal_url']:
@ -568,6 +587,7 @@ def GetAllValideSessionFormation_List(diction):
coll_session = MYSY_GV.dbname['session_formation']
myquery = {}
myquery['class_internal_url'] = class_internal_url
myquery['partner_owner_recid'] = str(my_partner['recid'])
myquery['valide'] = "1"
#print(" ##### myquery = "+str(myquery))
@ -627,7 +647,7 @@ def GetAllValideSessionPartner_List(diction):
filt_class_partner_recid = {'partner_owner_recid': str(my_partner['recid'])}
query = [
query = [{'$match': {'partner_owner_recid':str(my_partner['recid'])}},
{'$lookup':
{
'from': 'myclass',
@ -777,7 +797,7 @@ def GetAllValideSessionPartner_List_filter_like(diction):
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':
{
'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['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")}
@ -1497,9 +1529,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 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.")
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."
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
"""
if ("lms_class_code" in class_from_external_code[0].keys()):
if (str(class_from_external_code[0]['code_session'].values[n])):
formation_data_lms_class_code = 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]['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['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")}

View File

@ -2901,7 +2901,7 @@ def GetAttendeeDetail_perSession(diction):
{'$expr':
{'$and':
[
{'$eq': ["$code_session", "$$session_id"]},
{'$eq': ['$_id', { '$toObjectId': '$$session_id' }]},
{'$eq': ["$class_internal_url", "$$class_internal_url"]},
{'$eq': ["$valide", "1"]}
]
@ -2927,7 +2927,7 @@ def GetAttendeeDetail_perSession(diction):
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):
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()):
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()):
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
local_price = ""
if ("price" in local_Insc_retval['inscription_collectoin'][0].keys()):
local_price = local_Insc_retval['inscription_collectoin'][0]['price']
if ("price" in local_Insc_retval.keys()):
local_price = local_Insc_retval['price']
my_retrun_dict['price'] = local_price
local_inscription_validation_date = ""
@ -3034,8 +3038,7 @@ def GetAttendeeDetail_perSession(diction):
client_rattachement_id = ""
client_rattachement_nom = ""
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'])),
'valide': '1', 'locked': '0'}, {'_id':1, 'nom':1})