11/08/23 - 16h

master
cherif 2023-08-11 18:46:42 +02:00
parent f0b3626064
commit 50ed7974e4
5 changed files with 4474 additions and 32 deletions

View File

@ -1,8 +1,10 @@
<?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="09/08/2023 - 21h">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="10/08/23 - 16h">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/GlobalVariable.py" beforeDir="false" afterPath="$PROJECT_DIR$/GlobalVariable.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" />
</list>
@ -68,13 +70,6 @@
<option name="presentableId" value="Default" />
<updated>1680804787304</updated>
</task>
<task id="LOCAL-00014" summary="25/04/23 - 21h">
<created>1682612087897</created>
<option name="number" value="00014" />
<option name="presentableId" value="LOCAL-00014" />
<option name="project" value="LOCAL" />
<updated>1682612087897</updated>
</task>
<task id="LOCAL-00015" summary="28/04/23 - 21h">
<created>1682714699263</created>
<option name="number" value="00015" />
@ -411,7 +406,14 @@
<option name="project" value="LOCAL" />
<updated>1691607124367</updated>
</task>
<option name="localTasksCounter" value="63" />
<task id="LOCAL-00063" summary="10/08/23 - 16h">
<created>1691675826292</created>
<option name="number" value="00063" />
<option name="presentableId" value="LOCAL-00063" />
<option name="project" value="LOCAL" />
<updated>1691675826292</updated>
</task>
<option name="localTasksCounter" value="64" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -426,7 +428,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="04/07/23 - 17h" />
<MESSAGE value="05/07/23 - 12h" />
<MESSAGE value="05/07/23 - 20h" />
<MESSAGE value="08/07/23 - 20h" />
@ -451,6 +452,7 @@
<MESSAGE value="06/08/23 - 23h" />
<MESSAGE value="08/08/2023 - 16h" />
<MESSAGE value="09/08/2023 - 21h" />
<option name="LAST_COMMIT_MESSAGE" value="09/08/2023 - 21h" />
<MESSAGE value="10/08/23 - 16h" />
<option name="LAST_COMMIT_MESSAGE" value="10/08/23 - 16h" />
</component>
</project>

View File

@ -449,6 +449,18 @@ Les types d'image authorisé a etre stockés en base de données
BDD_STOCKAGE_IMG = ['logo', 'cachet', 'user']
"""
Pour les session, on definit les étapes suivantes :
0 => En projet
1 => En planification
2 => Planifiée
3 => Terminée
4 => Facturée
-1 => Annulée
"""
SESSION_ETAPE = ['-1', '0', '1', '2', '3', '4', '5']

View File

@ -707,18 +707,17 @@ def GetAllClassStagiaire(diction):
RetObject = []
val_tmp = 1
val_tmp = 0
print(" #### myquery 01= "+str(myquery))
for retval in coll_session.find(myquery):
val_tmp = val_tmp + 1
user = retval
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
RetObject.append(mycommon.JSONEncoder().encode(user))
return True, RetObject
except Exception as e:

File diff suppressed because it is too large Load Diff

View File

@ -30,6 +30,8 @@ la clée est :
- class_internal_url
/!\ : le champ 'source' definit la source de la creation de la session
si le champ 'session_id' est renseigné alors c'est une mise à jour.
"""
def Add_Update_SessionFormation(diction):
try:
@ -44,7 +46,7 @@ def Add_Update_SessionFormation(diction):
'code_postal', 'ville', 'formateur', 'code_session',
'class_internal_url', 'session_status', 'date_debut_inscription', 'date_fin_inscription',
'attestation_certif', "distantiel", "presentiel", "prix_session", 'contenu_ftion', 'lms_class_code',
'session_ondemande', 'source']
'session_ondemande', 'source', 'session_id', 'session_etape']
incom_keys = diction.keys()
for val in incom_keys:
@ -77,6 +79,9 @@ def Add_Update_SessionFormation(diction):
if retval is False:
return "Err_Connexion", " La session de connexion n'est pas valide"
session_id = ""
if ("session_id" in diction.keys()):
session_id = diction['session_id']
code_session = ""
@ -106,6 +111,13 @@ def Add_Update_SessionFormation(diction):
if ("date_debut" in diction.keys()):
mydata['date_debut'] = diction['date_debut']
if ("session_etape" in diction.keys()):
if(str(diction['session_etape']) not in MYSY_GV.SESSION_ETAPE):
mycommon.myprint(str(inspect.stack()[0][3]) + " - L'étape '"+str(diction['session_etape'])+"' n'est pas autorisée ")
return False, "L'étape '"+str(diction['session_etape'])+"' n'est pas autorisée "
mydata['session_etape'] = diction['session_etape']
if ("date_fin" in diction.keys()):
mydata['date_fin'] = diction['date_fin']
@ -270,29 +282,85 @@ def Add_Update_SessionFormation(diction):
# Fin Controle de cohérence sur les dates
print(" ### query_key = ", query_key)
coll_name = MYSY_GV.dbname['session_formation']
ret_val = coll_name.find_one_and_update(
query_key,
{"$set": mydata},
upsert=True,
return_document=ReturnDocument.AFTER
)
"""
Verification avant ajout ou mise à jour
1 - si le champ 'session_id' est renseingé alors c'est une mise à jour.
Dans le cas d'une mise à jour,
je verifie s'il y a des inscription avec les code session actuellement en base, si oui, alors on refuse la modication
/!\ : DU CODE SESSION, mais on accepte les autres champs car le session est deja utilisé.
2 - Si le champ 'session_id' N'EST PAS renseingé alors c'est une creation.
On verifie que ce code session n'est pas deja utilisé pour cette formation.
.
"""
Warning_Message = ""
if(len(str(session_id)) > 0 ):
# Il s'agit d'une mise à jour
if (ret_val['_id'] is None):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Impossible d'ajouter/mettre à jour la session '"+str(diction['code_session'])+"' ")
return False, "Impossible d'ajouter/mettre à jour la session '"+str(diction['code_session'])+"' "
# Etape 1 : recuperation du code session en base
local_retval1 = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(session_id))})
if( local_retval1 is None or 'code_session' not in local_retval1.keys() or 'class_internal_url' not in local_retval1.keys() ):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Cette session n'as pas de code session ")
return False, "Impossible de recuperer le code de la session (1) "
existing_session_code = local_retval1['code_session']
existing_class_internal_url = local_retval1['class_internal_url']
local_retval = MYSY_GV.dbname['inscription'].count_documents({'session_id':str(existing_session_code),
'class_internal_url':str(existing_class_internal_url)})
return True, " La session de formation à bien été crééé"
if( local_retval > 0):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Cette session a déjà des inscriptions. Le code de la session ne peut etre modifié. Les autres champs ont été correctement mis à jour")
mydata['code_session'] = existing_session_code # On remet le actuellement en base de données
Warning_Message = "Cette session a déjà des inscriptions. Le code de la session ne peut etre modifié. Les autres champs ont été correctement mis à jour"
print(" ###laaa mydata = ", mydata)
coll_name = MYSY_GV.dbname['session_formation']
ret_val = coll_name.find_one_and_update(
{'_id':ObjectId(str(session_id))},
{"$set": mydata},
upsert=False,
return_document=ReturnDocument.AFTER
)
if (ret_val is None or '_id' not in ret_val.keys()):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Impossible d'ajouter/mettre à jour la session '" + str(
diction['code_session']) + "' ")
return False, "Impossible d'ajouter/mettre à jour la session '" + str(diction['code_session']) + "' "
print("len(str(Warning_Message)) = ", len(str(Warning_Message)), " ### CONTOLE : ", Warning_Message)
if(len(str(Warning_Message)) > 2 ):
print(" ### KOOOOOOOOOOOOOOOOOOOOOO")
return True, str(Warning_Message)
return True, " La session de formation à bien été mise à jour"
if (len(str(session_id)) <= 0):
# La session n'existe pas, on fait une simple creation
print(" ### mydata = ", mydata)
coll_name = MYSY_GV.dbname['session_formation']
ret_val = coll_name.insert_one(mydata)
if (ret_val is None or '_id' not in ret_val.keys()):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Impossible d'ajouter la session '" + str(
diction['code_session']) + "' ")
return False, "Impossible d'ajouter la session '" + str(diction['code_session']) + "' "
return True, " La session de formation à bien été créée"
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de créer la session de formation"
return False, "Impossible de créer / mettre à jour la session de formation"
"""
@ -374,6 +442,8 @@ def GetSessionFormation(diction):
nb_val = nb_val + 1
RetObject.append(mycommon.JSONEncoder().encode(retval))
# Si le nombre de session trouvé est > 1 alors incohérence, retourner une message d'erreur
if( nb_val > 1 ):
mycommon.myprint(str(inspect.stack()[0][3]) + " - la query "+str(myquery)+" retourne "+str(nb_val)+" session. ceci n'est pas normal. il ne doit pas y avoir plus 1 session")
@ -688,7 +758,8 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
'''
field_list = ['date_debut', 'date_fin', 'nb_participant', 'adresse', 'code_postal', 'ville',
'session_status', 'date_debut_inscription', 'date_fin_inscription', 'attestation', 'formateur',
'code_session', "distanciel", "presentiel", "prix_session", 'contenu_ftion', 'lms_class_code', 'session_ondemande']
'code_session', "distanciel", "presentiel", "prix_session", 'contenu_ftion', 'lms_class_code',
'session_ondemande', 'session_etape']
# Controle du nombre de lignes dans le fichier.
total_rows = len(df)
@ -913,7 +984,24 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
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"):
@ -923,7 +1011,7 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
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'])
@ -996,4 +1084,6 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
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 d'importer les sessions de formation en masse "
return False, "Impossible d'importer les sessions de formation en masse "