diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 62f6438..1702a4e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,12 +4,15 @@ + - @@ -512,6 +519,7 @@ - \ No newline at end of file diff --git a/Session_Formation.py b/Session_Formation.py index f040762..4d12a02 100644 --- a/Session_Formation.py +++ b/Session_Formation.py @@ -94,7 +94,7 @@ def Add_Update_SessionFormation(diction): # 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" + return "Err_Connexion", " La promotion de connexion n'est pas valide" data_for_check_connexion = {'token':my_token} local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(data_for_check_connexion) @@ -102,6 +102,50 @@ def Add_Update_SessionFormation(diction): return local_status, my_partner + user_scope_class_id_ObjectId = [] + if ("scope" in my_partner.keys() and "class_id" in my_partner['scope'].keys() and len(my_partner['scope']['class_id']) > 0): + for tmp in my_partner['scope']['class_id']: + user_scope_class_id_ObjectId.append(ObjectId(str(tmp))) + + + """ + Verifier la validité de la formation + """ + print(" session check QRY = ", {'internal_url':str(diction['class_internal_url']), + 'partner_owner_recid':str(my_partner['recid']), + 'valide':'1', + 'locked':'0', + '_id': { + '$in': user_scope_class_id_ObjectId} + }) + + is_class_valide = MYSY_GV.dbname['myclass'].count_documents({'internal_url':str(diction['class_internal_url']), + 'partner_owner_recid':str(my_partner['recid']), + 'valide':'1', + 'locked':'0', + '_id': { + '$in': user_scope_class_id_ObjectId} + } + ) + + if( is_class_valide != 1 ): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " L'identifiant de la formation est invalide ") + return False, "L'identifiant de la formation est invalide" + + is_class_data = MYSY_GV.dbname['myclass'].find_one({'internal_url':str(diction['class_internal_url']), + 'partner_owner_recid':str(my_partner['recid']), + 'valide':'1', + 'locked':'0', + '_id': { + '$in': user_scope_class_id_ObjectId} + }, {'_id':1, 'internal_url':1} + ) + + + + session_id = "" if ("session_id" in diction.keys()): session_id = diction['session_id'] @@ -113,11 +157,14 @@ def Add_Update_SessionFormation(diction): query_key['code_session'] = diction['code_session'] + class_internal_url = "" if ("class_internal_url" in diction.keys()): mydata['class_internal_url'] = diction['class_internal_url'] - class_internal_url = diction['class_internal_url'] - query_key['class_internal_url'] = diction['class_internal_url'] + mydata['class_id'] = str(is_class_data['_id']) + + class_id = str(is_class_data['_id']) + query_key['class_id'] = str(is_class_data['_id']) class_source = "" if ("source" in diction.keys()): @@ -343,15 +390,15 @@ def Add_Update_SessionFormation(diction): if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Formation : "+str(code_session)+" : Impossible de créer/mettre à jour la session de formation. La date de debut n'est pas au format jj/mm/aaaa ") + 3]) + " - Formation : "+str(code_session)+" : Impossible de créer/mettre à jour La promotion de formation. La date de debut n'est pas au format jj/mm/aaaa ") - return False, " - Formation : "+str(code_session)+" : Impossible de créer/mettre à jour la session de formation. La date de debut n'est pas au format jj/mm/aaaa " + return False, " - Formation : "+str(code_session)+" : Impossible de créer/mettre à jour La promotion de formation. La date de debut n'est pas au format jj/mm/aaaa " local_status = mycommon.CheckisDate(str(diction['date_fin'])[0:10]) if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " -Formation : "+str(code_session)+" : Impossible de créer/mettre à jour la session de formation. La date de fin n'est pas au format jj/mm/aaaa ") + 3]) + " -Formation : "+str(code_session)+" : Impossible de créer/mettre à jour La promotion de formation. La date de fin n'est pas au format jj/mm/aaaa ") return False, " -Formation : "+str(code_session)+" : La date de fin n'est pas au format jj/mm/aaaa " @@ -375,7 +422,7 @@ def Add_Update_SessionFormation(diction): mycommon.myprint( str(inspect.stack()[0][ 3]) + " - Formation : " + str( - code_session) + " : Impossible de créer/mettre à jour la session de formation. La date_debut_inscription n'est pas au format jj/mm/aaaa ") + code_session) + " : Impossible de créer/mettre à jour La promotion de formation. La date_debut_inscription n'est pas au format jj/mm/aaaa ") return False, " -Formation : " + str( code_session) + " : La date de début d'inscription n'est pas au format jj/mm/aaaa " @@ -429,10 +476,10 @@ def Add_Update_SessionFormation(diction): if (datetime.strptime(str(diction['date_debut'])[0:10], '%d/%m/%Y') < datetime.strptime(str(mytoday).strip(), '%d/%m/%Y')) : mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation : La date de debut de sessions " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion de formation : La date de debut de sessions " + str( diction['date_debut']) +" est antérieure à la date du jour ") - return False, " - Impossible de créer/mettre à jour la session de formation : La date de debut de sessions " + str( + return False, " - Impossible de créer/mettre à jour La promotion de formation : La date de debut de sessions " + str( diction['date_debut']) +" est antérieure à la date du jour " """ @@ -457,12 +504,12 @@ def Add_Update_SessionFormation(diction): # 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() ): + if( local_retval1 is None or 'code_session' not in local_retval1.keys() or 'class_id' not in local_retval1.keys() ): mycommon.myprint(str(inspect.stack()[0][3]) + " - Cette session n'as pas de code session ") - return False, "Impossible de récupérer le code de la session (1) " + return False, "Impossible de récupérer le code de La promotion (1) " existing_session_code = local_retval1['code_session'] - existing_class_internal_url = local_retval1['class_internal_url'] + existing_class_id = local_retval1['class_id'] current_step = local_retval1['session_etape'] @@ -470,12 +517,12 @@ def Add_Update_SessionFormation(diction): local_retval = MYSY_GV.dbname['inscription'].count_documents({'session_id':str(existing_session_code), - 'class_internal_url':str(existing_class_internal_url)}) + 'class_id':str(existing_class_id)}) 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") + mycommon.myprint(str(inspect.stack()[0][3]) + " - Cette session a déjà des inscriptions. Le code de La promotion 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" + Warning_Message = "Cette session a déjà des inscriptions. Le code de La promotion ne peut etre modifié. Les autres champs ont été correctement mis à jour" #print(" ###laaa mydata = ", mydata) @@ -489,9 +536,9 @@ def Add_Update_SessionFormation(diction): 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( + str(inspect.stack()[0][3]) + " Impossible d'ajouter/mettre à jour La promotion '" + str( diction['code_session']) + "' ") - return False, "Impossible d'ajouter/mettre à jour la session '" + str(diction['code_session']) + "' " + return False, "Impossible d'ajouter/mettre à jour La promotion '" + str(diction['code_session']) + "' " new_step = ret_val['session_etape'] @@ -526,10 +573,10 @@ def Add_Update_SessionFormation(diction): if(len(str(Warning_Message)) > 2 ): return True, str(Warning_Message) - return True, " La session de formation à bien été mise à jour" + return True, " La promotion de formation à bien été mise à jour" if (len(str(session_id)) <= 0): - # La session n'existe pas, on fait une simple creation + # La promotion n'existe pas, on fait une simple creation mydata['date_created'] = str(datetime.now()) @@ -564,9 +611,9 @@ def Add_Update_SessionFormation(diction): if (ret_val is None or not hasattr(ret_val, 'inserted_id') ): mycommon.myprint( - str(inspect.stack()[0][3]) + " Impossible d'ajouter la session '" + str( + str(inspect.stack()[0][3]) + " Impossible d'ajouter La promotion '" + str( diction['code_session']) + "' ") - return False, "Impossible d'ajouter la session '" + str(diction['code_session']) + "' " + return False, "Impossible d'ajouter La promotion '" + str(diction['code_session']) + "' " """ # Ajout de l'evenement dans l'historique @@ -588,13 +635,13 @@ def Add_Update_SessionFormation(diction): " WARNING : Impossible de logguer l'historique pour l'évènement : " + str(history_event_dict)) - return True, " La session de formation à bien été créée" + return True, " La promotion à 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 / mettre à jour la session de formation" + return False, "Impossible de créer / mettre à jour la promotion de formation" @@ -649,15 +696,15 @@ def Update_SessionFormation_Only_Step(diction): """ - Verifier la valididé de la session de formation + Verifier la valididé de La promotion de formation """ is_valide_session = MYSY_GV.dbname['session_formation'].count_documents({'_id':ObjectId(str(diction['_id'])), 'valide':'1', 'partner_owner_recid':str(my_partner['recid'])}) if( is_valide_session != 1 ): mycommon.myprint( - str(inspect.stack()[0][3]) + " - L'identifiant de la session de formation est invalide ") - return False, "L'identifiant de la session de formation est invalide" + str(inspect.stack()[0][3]) + " - L'identifiant de La promotion de formation est invalide ") + return False, "L'identifiant de La promotion de formation est invalide" is_valide_session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['_id'])), @@ -698,9 +745,9 @@ def Update_SessionFormation_Only_Step(diction): 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( + str(inspect.stack()[0][3]) + " Impossible d'ajouter/mettre à jour La promotion '" + str( diction['code_session']) + "' ") - return False, "Impossible d'ajouter/mettre à jour la session '" + str(diction['code_session']) + "' " + return False, "Impossible d'ajouter/mettre à jour La promotion '" + str(diction['code_session']) + "' " """ @@ -723,14 +770,14 @@ def Update_SessionFormation_Only_Step(diction): " WARNING : Impossible de logguer l'historique pour l'évènement : " + str(history_event_dict)) - return True, " La session de formation à bien été mise à jour" + return True, " La promotion de formation à bien été mise à jour" except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) - return False, "Impossible mettre à jour la session de formation" + return False, "Impossible mettre à jour La promotion de formation" """ @@ -929,7 +976,7 @@ def GetSessionFormation(diction): # 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") - return False, " Les informations de la session "+str(session_id)+" sont incohérentes. Merci de contacter le support" + return False, " Les informations de La promotion "+str(session_id)+" sont incohérentes. Merci de contacter le support" return True, RetObject @@ -939,7 +986,7 @@ def GetSessionFormation(diction): 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 récupérer la session de formation" + return False, "Impossible de récupérer La promotion de formation" """ @@ -1115,7 +1162,7 @@ def Get_Given_SessionFormation_From_Id(diction): # 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") - return False, " Les informations de la session "+str(session_id)+" sont incohérentes. Merci de contacter le support" + return False, " Les informations de La promotion "+str(session_id)+" sont incohérentes. Merci de contacter le support" return True, RetObject @@ -1124,7 +1171,7 @@ def Get_Given_SessionFormation_From_Id(diction): 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 récupérer la session de formation" + return False, "Impossible de récupérer La promotion de formation" """ @@ -1254,13 +1301,22 @@ def Get_Partner_Session_Ftion_Reduice_Fields(diction): if (local_status is not True): return local_status, my_partner + """ + Filtre uniquement pour la Formation continue + """ + filt_scope_class_id = {} + if ("scope" in my_partner.keys() and "class_id" in my_partner['scope'].keys() and len( + my_partner['scope']['class_id']) > 0): + filt_scope_class_id['class_id'] = {'$in': my_partner['scope']['class_id']} + + RetObject = [] RetObject = [] val_tmp = 0 - for retval in MYSY_GV.dbname['session_formation'].find({'partner_owner_recid':str(my_partner['recid']), - 'valide':'1'}, + for retval in MYSY_GV.dbname['session_formation'].find({ "$and" : [ {'partner_owner_recid':str(my_partner['recid']), + 'valide':'1',},filt_scope_class_id]}, {'_id':1, 'code_session':1, 'titre':1, 'class_internal_url':1, 'date_debut':1, 'date_fin':1}): @@ -2517,7 +2573,7 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): # 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" + return "Err_Connexion", " La promotion de connexion n'est pas valide" class_internal_url = "" @@ -2603,8 +2659,8 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): if (formation_data is None): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " La session de formation n'existe pas : Impossible d'importer la liste des participants ") - return False, "la session de formation n'existe pas. Impossible d'importer la liste des participants" + 3]) + " La promotion de formation n'existe pas : Impossible d'importer la liste des participants ") + return False, "La promotion de formation n'existe pas. Impossible d'importer la liste des participants" x = range(0, total_rows) ignored_line = "" @@ -2660,20 +2716,20 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): 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)+"." + 3]) + " - Impossible de créer/mettre à jour La promotion 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 " + return False, " - Impossible de créer/mettre à jour La promotion 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) + "." + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion de formation à ligne " + str( n+1) + ". La date fin n'est pas au format jj/mm/aaaa " @@ -2682,10 +2738,10 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): 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']) + + 3]) + " - Impossible de créer La promotion 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] +\ + return False, " Impossible de créer La promotion 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)+" " @@ -2887,10 +2943,10 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): 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) + "." + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion de formation à ligne " + str( n+2) + ". La date_debut_inscription n'est pas au format jj/mm/aaaa " @@ -2900,10 +2956,10 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): 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) + "." + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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_debut_inscription doit <= date_fin_inscription @@ -2912,11 +2968,11 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): 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( + 3]) + " - Impossible de créer La promotion 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)+" " + return False, " Impossible de créer La promotion 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) mydata['class_internal_url'] = str(class_internal_url) @@ -2930,7 +2986,7 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None): diction_for_session_id['adresse'] = str(mydata['adresse']) """ - Verifier si la session existe deja en base, si c'est le cas récupérer le '_id' + Verifier si La promotion existe deja en base, si c'est le cas récupérer le '_id' la clé pour verifier l'existance d'une session est : - code_session - class_internal_url @@ -3011,7 +3067,7 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict # 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" + return "Err_Connexion", " La promotion de connexion n'est pas valide" class_internal_url = "" if ("class_internal_url" in diction.keys()): @@ -3078,8 +3134,8 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict if (formation_data is None): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " La session de formation n'existe pas : Impossible d'importer la liste des participants ") - return False, "la session de formation n'existe pas. Impossible d'importer la liste des participants" + 3]) + " La promotion de formation n'existe pas : Impossible d'importer la liste des participants ") + return False, "La promotion de formation n'existe pas. Impossible d'importer la liste des participants" x = range(0, total_rows) ignored_line = "" @@ -3139,11 +3195,11 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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] @@ -3151,11 +3207,11 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion de formation à ligne " + str( n + 1) + ". La date fin n'est pas au format jj/mm/aaaa " # Verifier que l'adresse email du formateur est valide @@ -3221,12 +3277,12 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict 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( + 3]) + " - Impossible de créer La promotion 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( + return False, " Impossible de créer La promotion 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) + " " @@ -3422,11 +3478,11 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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] @@ -3434,11 +3490,11 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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 @@ -3446,12 +3502,12 @@ def Controle_Add_Update_SessionFormation_mass(saved_file=None, Folder=None, dict 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( + 3]) + " - Impossible de créer La promotion de formation : La date debut des inscriptions " + str( mydata['date_debut_inscription'])[0:10] + " est postérieure à la date de fin des inscriptions " + str( 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( + return False, " Impossible de créer La promotion 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) @@ -3524,13 +3580,13 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict # 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" + return "Err_Connexion", " La promotion de connexion n'est pas valide" # 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" + return "Err_Connexion", " La promotion de connexion n'est pas valide" partner_recid = mycommon.get_parnter_recid_from_token(my_token) if (partner_recid is False): @@ -3557,8 +3613,8 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict if(exclusive_session_id_count != "1" ): mycommon.myprint( - str(inspect.stack()[0][3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + str(inspect.stack()[0][3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " exclusive_session_id_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(exclusive_session_id)), @@ -3649,11 +3705,11 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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] @@ -3661,11 +3717,11 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion de formation à ligne " + str( n + 1) + ". La date fin n'est pas au format jj/mm/aaaa " # Verifier que l'adresse email du formateur est valide @@ -3733,12 +3789,12 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict 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( + 3]) + " - Impossible de créer La promotion 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( + return False, " Impossible de créer La promotion 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) + " " @@ -3968,11 +4024,11 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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] @@ -3981,11 +4037,11 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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 @@ -3994,12 +4050,12 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict 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( + 3]) + " - Impossible de créer La promotion 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( + return False, " Impossible de créer La promotion 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) @@ -4014,7 +4070,7 @@ def Add_Update_SessionFormation_mass_for_many_class(file=None, Folder=None, dict diction_for_session_id['adresse'] = str(mydata['adresse']) """ - Verifier si la session existe deja en base, si c'est le cas récupérer le '_id' + Verifier si La promotion existe deja en base, si c'est le cas récupérer le '_id' la clé pour verifier l'existance d'une session est : - code_session - class_internal_url @@ -4095,7 +4151,7 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo # 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" + return "Err_Connexion", " La promotion de connexion n'est pas valide" partner_recid = mycommon.get_parnter_recid_from_token(my_token) @@ -4205,11 +4261,11 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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] @@ -4217,11 +4273,11 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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 @@ -4229,12 +4285,12 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo 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( + 3]) + " - Impossible de créer La promotion 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( + return False, " Impossible de créer La promotion 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) + " " @@ -4488,11 +4544,11 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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] @@ -4501,11 +4557,11 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo if (local_status is False): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " - Impossible de créer/mettre à jour la session de formation à ligne " + str( + 3]) + " - Impossible de créer/mettre à jour La promotion 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( + return False, " - Impossible de créer/mettre à jour La promotion 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 @@ -4513,12 +4569,12 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo 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( + 3]) + " - Impossible de créer La promotion 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( + return False, " Impossible de créer La promotion 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) @@ -4544,7 +4600,7 @@ def Controle_Add_Update_SessionFormation_mass_for_many_class(saved_file=None, Fo """ Cette fonction supprime une session de formation. /!\ : il faut s'assurer qu'il n'y a aucune inscription avant de supprimer valide. -Et la session est supprimé, alors supprimer toutes inscriptions (annulée) associés +Et La promotion est supprimé, alors supprimer toutes inscriptions (annulée) associés Ensuite supprimer les affectations d'enseignants et de materiels associée 12/01/2024 : @@ -4674,12 +4730,12 @@ def Delete_SessionFormation(diction): session_id) + " a été correctement supprimée ") - return True, "La session a été correctement supprimée" + return True, "La promotion a été correctement supprimé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 supprimer la session de formation" + return False, "Impossible de supprimer La promotion de formation" """ @@ -4737,8 +4793,8 @@ def Delete_List_SessionFormation(diction): inscription_count = MYSY_GV.dbname['inscription'].count_documents(inscription_count_qry) if( inscription_count > 0 ): session_formation_data = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(session_id)), 'partner_owner_recid':str(partner_recid)}) - mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées.Suppression en masse annulée ") - return False, "Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées. Suppression en masse annulée" + mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer La promotion "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées.Suppression en masse annulée ") + return False, "Impossible de supprimer La promotion "+str(session_formation_data['code_session'])+". Vous avez "+str(inscription_count)+" inscriptions associées. Suppression en masse annulée" """ Verifier que l'inscription n'est pas utilisée dans un devis : 'partner_order_line' @@ -4751,9 +4807,9 @@ def Delete_List_SessionFormation(diction): session_formation_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(session_id)), 'partner_owner_recid': str(partner_recid)}) - mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez " + str( + mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer La promotion "+str(session_formation_data['code_session'])+". Vous avez " + str( is_session_in_partner_order_line_count) + " devis ou commandes (s) associé(s) ") - return False, "Impossible de supprimer la session "+str(session_formation_data['code_session'])+". Vous avez " + str( + return False, "Impossible de supprimer La promotion "+str(session_formation_data['code_session'])+". Vous avez " + str( is_session_in_partner_order_line_count) + " devis ou commandes (s) associé(s) " # Suppression des insciption eventuellement annulées @@ -4784,7 +4840,7 @@ def Delete_List_SessionFormation(diction): if( cpt > 1 ): return True, "("+str(cpt)+") sessions ont été correctement supprimées" else: - return True, "La session a été correctement supprimée" + return True, "La promotion a été correctement supprimée" except Exception as e: @@ -4833,7 +4889,7 @@ def Is_Corresponding_SessionFormation(diction): # Verifier la validité du token retval = mycommon.check_partner_token_validity("", mytoken) if retval is False: - return "Err_Connexion", " La session de connexion n'est pas valide" + return "Err_Connexion", " La promotion de connexion n'est pas valide" partner_recid = mycommon.get_parnter_recid_from_token(mytoken) if (partner_recid is False): @@ -4910,7 +4966,7 @@ def Is_Corresponding_SessionFormation(diction): 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 verifier si la session correspond à une session existante" + return False, "Impossible de verifier si La promotion correspond à une session existante" @@ -4995,8 +5051,8 @@ def Duplicate_List_Session_Formation(diction): 'session_step_name':str(session_etape)}) if( is_valide_etape != 1): mycommon.myprint( - str(inspect.stack()[0][3]) + " L'étape de la session est invalide ") - return False, " L'étape de la session est invalide " + str(inspect.stack()[0][3]) + " L'étape de La promotion est invalide ") + return False, " L'étape de La promotion est invalide " # Verification des date et des cohérences de date @@ -5046,8 +5102,8 @@ def Duplicate_List_Session_Formation(diction): if( session_data is None): mycommon.myprint( - str(inspect.stack()[0][3]) + " La session n'est pas valide ") - return False, " La session n'est pas valide " + str(inspect.stack()[0][3]) + " La promotion n'est pas valide ") + return False, " La promotion n'est pas valide " @@ -5087,12 +5143,12 @@ def Duplicate_List_Session_Formation(diction): if(cpt > 1 ): return True, "("+str(cpt)+" sessions ont été correctement dupliquées " else: - return True, "La session a été correctement dupliquée " + return True, "La promotion a été correctement dupliquée " except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) - return False, "Impossible de dupliquer la session de formation" + return False, "Impossible de dupliquer La promotion de formation" """ @@ -5127,7 +5183,7 @@ def Prepare_and_Send_Convention_From_Session_By_Email(tab_files, Folder, diction if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -5136,11 +5192,11 @@ def Prepare_and_Send_Convention_From_Session_By_Email(tab_files, Folder, diction if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id':str(diction['session_id']), 'status': '1', @@ -5310,7 +5366,7 @@ def Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_Email(tab_f if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -5319,8 +5375,8 @@ def Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_Email(tab_f if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " my_inscription_ids = "" if ("tab_ids" in diction.keys()): @@ -5333,7 +5389,7 @@ def Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_Email(tab_f for my_inscription_id in tab_my_inscription_ids: tab_my_inscription_Object_ids.append(ObjectId(str(my_inscription_id))) - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id':str(diction['session_id']), 'status': '1', @@ -5521,7 +5577,7 @@ def Prepare_and_Send_Default_Convention_From_Session_By_Email(tab_files, Folder, - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -5530,11 +5586,11 @@ def Prepare_and_Send_Default_Convention_From_Session_By_Email(tab_files, Folder, if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id':str(diction['session_id']), 'status': '1', @@ -5838,7 +5894,7 @@ def Prepare_and_Send_Convention_From_Session_By_PDF(diction): if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -5847,13 +5903,13 @@ def Prepare_and_Send_Convention_From_Session_By_PDF(diction): if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " # Stokage des nom de fichier à zipper list_file_name_to_zip = [] - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id':str(diction['session_id']), @@ -6013,7 +6069,7 @@ def Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_PDF(diction if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -6022,8 +6078,8 @@ def Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_PDF(diction if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " my_inscription_ids = "" if ("tab_ids" in diction.keys()): @@ -6039,7 +6095,7 @@ def Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_PDF(diction # Stokage des nom de fichier à zipper list_file_name_to_zip = [] - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id':str(diction['session_id']), @@ -6195,7 +6251,7 @@ def Prepare_and_Send_Default_Convention_From_Session_By_PDF(diction): if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -6204,10 +6260,10 @@ def Prepare_and_Send_Default_Convention_From_Session_By_PDF(diction): if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id': str( diction['session_id']), @@ -6530,15 +6586,15 @@ def Create_Convention_By_Client_PDF(diction): tab_client.append(client_data['_id']) - # Verifier que la session est valide + # Verifier que La promotion est valide session_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', 'partner_owner_recid': str(my_partner['recid'])}) if (session_data is None): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " tab_session = [] tab_session.append(session_data['_id']) @@ -6715,15 +6771,15 @@ def Create_Convention_By_Stagiaire_PDF(diction): tab_apprenant.append(ObjectId(str(statgiaire_data['apprenant_id']))) - # Verifier que la session est valide + # Verifier que La promotion est valide session_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', 'partner_owner_recid': str(my_partner['recid'])}) if (session_data is None): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " tab_session = [] tab_session.append(session_data['_id']) @@ -6831,7 +6887,7 @@ def Prepare_and_Send_Convocation_From_Session_By_PDF(diction): if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -6840,8 +6896,8 @@ def Prepare_and_Send_Convocation_From_Session_By_PDF(diction): if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " # Stokage des nom de fichier à zipper list_file_name_to_zip = [] @@ -6945,7 +7001,7 @@ def Prepare_and_Send_Convocation_From_Session_For_Selected_Inscrit_By_PDF(dictio if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -6954,8 +7010,8 @@ def Prepare_and_Send_Convocation_From_Session_For_Selected_Inscrit_By_PDF(dictio if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " # Stokage des nom de fichier à zipper list_file_name_to_zip = [] @@ -7126,15 +7182,15 @@ def Create_Convocation_By_Stagiaire_PDF(diction): tab_apprenant.append(ObjectId(str(statgiaire_data['apprenant_id']))) - # Verifier que la session est valide + # Verifier que La promotion est valide session_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', 'partner_owner_recid': str(my_partner['recid'])}) if (session_data is None): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " tab_session = [] tab_session.append(session_data['_id']) @@ -7229,7 +7285,7 @@ def Create_Convocation_By_Stagiaire_PDF(diction): """ Cette fonction prepare et envoi les conVocation a chaque -participant à la session de formation +participant à La promotion de formation """ def Prepare_and_Send_Convocation_From_Session_By_Email(tab_files, Folder, diction): try: @@ -7252,7 +7308,7 @@ def Prepare_and_Send_Convocation_From_Session_By_Email(tab_files, Folder, dictio if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -7261,11 +7317,11 @@ def Prepare_and_Send_Convocation_From_Session_By_Email(tab_files, Folder, dictio if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_participants = MYSY_GV.dbname['inscription'].find({'session_id': str(diction['session_id']), 'status': '1', 'partner_owner_recid': str(my_partner['recid']), @@ -7380,7 +7436,7 @@ def Prepare_and_Send_Convocation_From_Session_For_Selected_Inscrit_By_Email(tab_ if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -7389,8 +7445,8 @@ def Prepare_and_Send_Convocation_From_Session_For_Selected_Inscrit_By_Email(tab_ if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " my_inscription_ids = "" if ("tab_ids" in diction.keys()): @@ -7403,7 +7459,7 @@ def Prepare_and_Send_Convocation_From_Session_For_Selected_Inscrit_By_Email(tab_ for my_inscription_id in tab_my_inscription_ids: tab_my_inscription_Object_ids.append(ObjectId(str(my_inscription_id))) - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_participants = MYSY_GV.dbname['inscription'].find({'session_id': str(diction['session_id']), '_id': {'$in': tab_my_inscription_Object_ids}, 'status': '1', @@ -7703,7 +7759,7 @@ def Sent_Convocation_Stagiaire_By_Email(tab_files, Folder, diction): - # Recuperations des info de la session de formation + # Recuperations des info de La promotion de formation session_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(inscription_data['session_id'])), 'valide': '1', 'partner_owner_recid': str(my_partner['recid'])}) @@ -7956,7 +8012,7 @@ def Sent_Convocation_Stagiaire_By_Email(tab_files, Folder, diction): """ Cette fonction prepare et envoi les attestation de formation a chaque -participant à la session de formation +participant à La promotion de formation """ def Prepare_and_Send_Attestation_From_Session_By_Email(tab_files, Folder, diction): try: @@ -7979,7 +8035,7 @@ def Prepare_and_Send_Attestation_From_Session_By_Email(tab_files, Folder, dictio if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -7988,8 +8044,8 @@ def Prepare_and_Send_Attestation_From_Session_By_Email(tab_files, Folder, dictio if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " tab_inscriptions_ids = "" if ("tab_inscriptions_ids" in diction.keys()): @@ -8306,7 +8362,7 @@ def Sent_Attestation_Stagiaire_By_Email(tab_files, Folder, diction): - # Recuperations des info de la session de formation + # Recuperations des info de La promotion de formation session_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(inscription_data['session_id'])), 'valide': '1', 'partner_owner_recid': str(my_partner['recid'])}) @@ -8605,7 +8661,7 @@ def Prepare_and_Send_Facture_From_Session_By_Email(tab_files, Folder, diction): if (local_status is not True): return local_status, my_partner, False - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -8614,8 +8670,8 @@ def Prepare_and_Send_Facture_From_Session_By_Email(tab_files, Folder, diction): if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False """ Gestion des inscriptions n'ayant pas de client ID @@ -8795,7 +8851,7 @@ def Prepare_and_Send_Facture_From_Session_By_Email(tab_files, Folder, diction): inscription_no_client_valide_no_locked_data['_id'])}}) - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id", {'session_id':str(diction['session_id']), 'status': '1', @@ -8899,13 +8955,13 @@ def Prepare_and_Send_Facture_From_Session_By_Email(tab_files, Folder, diction): tab_local_invoice_ref_interne.append(str(local_invoice_ref_interne)) """ - 07/03/20204 : mettre un statut de facturation sur la session afin de voir + 07/03/20204 : mettre un statut de facturation sur La promotion afin de voir tout de suite quel session est entièrement facturée ou partiellement. regles : - Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2 - Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1 - Si non invoiced_statut de la session =0 + Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de La promotion = 2 + Si au moins une inscription associée à une session est facturé ==> invoiced_statut de La promotion = 1 + Si non invoiced_statut de La promotion =0 """ nb_inscription_facture = MYSY_GV.dbname['inscription'].count_documents( {'partner_owner_recid': my_partner['recid'], @@ -8965,7 +9021,7 @@ def Prepare_and_Send_Facture_From_Session_By_Email(tab_files, Folder, diction): mycommon.myprint(" WARNING : Impossible de logguer l'historique l'inscription_id : " + str(val['_id'])) - return_message = " La session a été correctement facturée.\nListe des factures : " + return_message = " La promotion a été correctement facturée.\nListe des factures : " for tmp in tab_local_invoice_ref_interne: return_message += "\n - "+str(tmp) @@ -8997,7 +9053,7 @@ def Prepare_and_Send_Facture_From_Session_By_Email_SAVE_ORIG(tab_files, Folder, if (local_status is not True): return local_status, my_partner, False - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -9006,8 +9062,8 @@ def Prepare_and_Send_Facture_From_Session_By_Email_SAVE_ORIG(tab_files, Folder, if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False """ Gestion des inscriptions n'ayant pas de client ID @@ -9187,7 +9243,7 @@ def Prepare_and_Send_Facture_From_Session_By_Email_SAVE_ORIG(tab_files, Folder, inscription_no_client_valide_no_locked_data['_id'])}}) - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("client_rattachement_id", {'session_id':str(diction['session_id']), 'status': '1', @@ -9291,13 +9347,13 @@ def Prepare_and_Send_Facture_From_Session_By_Email_SAVE_ORIG(tab_files, Folder, tab_local_invoice_ref_interne.append(str(local_invoice_ref_interne)) """ - 07/03/20204 : mettre un statut de facturation sur la session afin de voir + 07/03/20204 : mettre un statut de facturation sur La promotion afin de voir tout de suite quel session est entièrement facturée ou partiellement. regles : - Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2 - Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1 - Si non invoiced_statut de la session =0 + Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de La promotion = 2 + Si au moins une inscription associée à une session est facturé ==> invoiced_statut de La promotion = 1 + Si non invoiced_statut de La promotion =0 """ nb_inscription_facture = MYSY_GV.dbname['inscription'].count_documents( {'partner_owner_recid': my_partner['recid'], @@ -9357,7 +9413,7 @@ def Prepare_and_Send_Facture_From_Session_By_Email_SAVE_ORIG(tab_files, Folder, mycommon.myprint(" WARNING : Impossible de logguer l'historique l'inscription_id : " + str(val['_id'])) - return_message = " La session a été correctement facturée.\nListe des factures : " + return_message = " La promotion a été correctement facturée.\nListe des factures : " for tmp in tab_local_invoice_ref_interne: return_message += "\n - "+str(tmp) @@ -9394,7 +9450,7 @@ def Invoice_Partner_From_Session( diction): if (local_status is not True): return local_status, my_partner, False - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_id_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -9403,8 +9459,8 @@ def Invoice_Partner_From_Session( diction): if (is_session_id_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False # Verifier que ce client a bien des inscriptions valide pour cette session nb_valide_inscription_pr_client = MYSY_GV.dbname['inscription'].count_documents( @@ -9449,7 +9505,7 @@ def Invoice_Partner_From_Session( diction): print(" ### tab_participant 2 = ", tab_participant) - # Recuperations des info de la session de formation + # Recuperations des info de La promotion de formation session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id']))}) tab_session = [] @@ -9574,12 +9630,12 @@ def Invoice_Partner_From_Session( diction): prix_session = 0 session_price = 0 if( "prix_session" not in session_data.keys() ): - mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La session n'a pas de prix valide") - return False, " Facturation : La session n'a pas de prix valide ", False + mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La promotion n'a pas de prix valide") + return False, " Facturation : La promotion n'a pas de prix valide ", False if( str(session_data['prix_session']).strip() == "" ): - mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La session n'a pas de prix valide (2) ") - return False, " Facturation : La session n'a pas de prix valide (2) ", False + mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La promotion n'a pas de prix valide (2) ") + return False, " Facturation : La promotion n'a pas de prix valide (2) ", False prix_session = mycommon.tryFloat(str(session_data['prix_session'])) @@ -9771,7 +9827,7 @@ def Sent_Facture_Stagiaire_By_Email_By_Partner_client(tab_files_name_full_path, if (local_status is not True): return local_status, my_partner - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_id_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -9780,8 +9836,8 @@ def Sent_Facture_Stagiaire_By_Email_By_Partner_client(tab_files_name_full_path, if (is_session_id_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " # Verifier que ce client a bien des inscriptions valide pour cette session is_valide_inscription_pr_client = MYSY_GV.dbname['inscription'].count_documents( @@ -9946,7 +10002,7 @@ def Sent_Facture_Stagiaire_By_Email_By_Partner_client(tab_files_name_full_path, print(" ### tab_participant 3 = ", tab_participant) - # Recuperations des info de la session de formation + # Recuperations des info de La promotion de formation session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id']))}) tab_session = [] @@ -10238,7 +10294,7 @@ def Invoice_Inscrption_With_Split_Session_By_Inscription_Id( tab_files, diction) if (local_status is not True): return local_status, my_partner, False - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_id_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -10247,8 +10303,8 @@ def Invoice_Inscrption_With_Split_Session_By_Inscription_Id( tab_files, diction) if (is_session_id_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False @@ -10505,13 +10561,13 @@ def Invoice_Inscrption_With_Split_Session_By_Inscription_Id( tab_files, diction) global_list_facture = str(global_list_facture).replace(",", "\n") """ - 07/03/20204 : mettre un statut de facturation sur la session afin de voir + 07/03/20204 : mettre un statut de facturation sur La promotion afin de voir tout de suite quel session est entièrement facturée ou partiellement. regles : - Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2 - Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1 - Si non invoiced_statut de la session =0 + Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de La promotion = 2 + Si au moins une inscription associée à une session est facturé ==> invoiced_statut de La promotion = 1 + Si non invoiced_statut de La promotion =0 """ nb_inscription_facture_termine = MYSY_GV.dbname['inscription'].count_documents( {'partner_owner_recid': my_partner['recid'], @@ -10613,7 +10669,7 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d tab_my_inscription_ids_Object.append(ObjectId(str(my_inscription_id))) - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -10622,10 +10678,10 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = [] liste_client_facturation_rattachement_id = MYSY_GV.dbname['inscription'].distinct( @@ -10997,13 +11053,13 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d tab_local_invoice_ref_interne.append(str(local_invoice_ref_interne)) """ - 07/03/20204 : mettre un statut de facturation sur la session afin de voir + 07/03/20204 : mettre un statut de facturation sur La promotion afin de voir tout de suite quel session est entièrement facturée ou partiellement. regles : - Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2 - Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1 - Si non invoiced_statut de la session =0 + Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de La promotion = 2 + Si au moins une inscription associée à une session est facturé ==> invoiced_statut de La promotion = 1 + Si non invoiced_statut de La promotion =0 """ nb_inscription_facture = MYSY_GV.dbname['inscription'].count_documents( {'partner_owner_recid': my_partner['recid'], @@ -11056,7 +11112,7 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id(tab_files, Folder, d if (local_status is False): mycommon.myprint(" WARNING : Impossible de logguer l'historique l'inscription_id : " + str(val['_id'])) - return_message = " La session a été correctement facturée.\nListe des factures : " + return_message = " La promotion a été correctement facturée.\nListe des factures : " for tmp in tab_local_invoice_ref_interne: return_message += "\n - " + str(tmp) @@ -11119,7 +11175,7 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files, tab_my_inscription_ids_Object.append(ObjectId(str(my_inscription_id))) - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -11128,13 +11184,13 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files, if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id", {'session_id': str(diction['session_id']), 'status': '1', @@ -11440,7 +11496,7 @@ def Prepare_and_Send_Facture_From_Session_By_Inscription_Id_SAVE_ORIG(tab_files, tab_local_invoice_ref_interne.append(str(local_invoice_ref_interne)) - return_message = " La session a été correctement facturée.\nListe des factures : " + return_message = " La promotion a été correctement facturée.\nListe des factures : " for tmp in tab_local_invoice_ref_interne: return_message += "\n - " + str(tmp) @@ -11517,7 +11573,7 @@ def Prepare_and_Send_SPLITED_Facture_From_Session_By_Inscription_Id(tab_files, F tab_my_inscription_ids_Object.append(ObjectId(str(my_inscription_id))) - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -11526,11 +11582,11 @@ def Prepare_and_Send_SPLITED_Facture_From_Session_By_Inscription_Id(tab_files, F if (is_session_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False - # Verifier qu'il ya bien des inscriptions valides dans la session pour le client + # Verifier qu'il ya bien des inscriptions valides dans La promotion pour le client liste_client_rattachement_id = MYSY_GV.dbname['inscription'].distinct("facture_client_rattachement_id", {'session_id': str(diction['session_id']), 'status': '1', @@ -11630,13 +11686,13 @@ def Prepare_and_Send_SPLITED_Facture_From_Session_By_Inscription_Id(tab_files, F tab_local_invoice_ref_interne.append(str(local_invoice_ref_interne)) """ - 07/03/20204 : mettre un statut de facturation sur la session afin de voir + 07/03/20204 : mettre un statut de facturation sur La promotion afin de voir tout de suite quel session est entièrement facturée ou partiellement. regles : - Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2 - Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1 - Si non invoiced_statut de la session =0 + Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de La promotion = 2 + Si au moins une inscription associée à une session est facturé ==> invoiced_statut de La promotion = 1 + Si non invoiced_statut de La promotion =0 """ nb_inscription_facture = MYSY_GV.dbname['inscription'].count_documents( {'partner_owner_recid': my_partner['recid'], @@ -11689,7 +11745,7 @@ def Prepare_and_Send_SPLITED_Facture_From_Session_By_Inscription_Id(tab_files, F if (local_status is False): mycommon.myprint(" WARNING : Impossible de logguer l'historique l'inscription_id : " + str(val['_id'])) """ - return_message = " La session a été correctement facturée.\nListe des factures : " + return_message = " La promotion a été correctement facturée.\nListe des factures : " for tmp in tab_local_invoice_ref_interne: return_message += "\n - " + str(tmp) @@ -11733,7 +11789,7 @@ def Invoice_Partner_From_Session_By_Inscription_Id( diction): if (local_status is not True): return local_status, my_partner, False - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_id_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -11742,8 +11798,8 @@ def Invoice_Partner_From_Session_By_Inscription_Id( diction): if (is_session_id_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False # Verifier que ce client a bien des inscriptions valide pour cette session nb_valide_inscription_pr_client = MYSY_GV.dbname['inscription'].count_documents( @@ -11814,7 +11870,7 @@ def Invoice_Partner_From_Session_By_Inscription_Id( diction): print(" ### tab_inscrit_partial_data = ", tab_inscrit_partial_data) print(" ### tab_apprenant = ", tab_apprenant) - # Recuperations des info de la session de formation + # Recuperations des info de La promotion de formation session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id']))}) tab_session = [] @@ -11978,12 +12034,12 @@ def Invoice_Partner_From_Session_By_Inscription_Id( diction): prix_session = 0 session_price = 0 if( "prix_session" not in session_data.keys() ): - mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La session n'a pas de prix valide") - return False, " Facturation : La session n'a pas de prix valide ", False + mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La promotion n'a pas de prix valide") + return False, " Facturation : La promotion n'a pas de prix valide ", False if( str(session_data['prix_session']).strip() == "" ): - mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La session n'a pas de prix valide (2) ") - return False, " Facturation : La session n'a pas de prix valide (2) ", False + mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La promotion n'a pas de prix valide (2) ") + return False, " Facturation : La promotion n'a pas de prix valide (2) ", False prix_session = mycommon.tryFloat(str(session_data['prix_session'])) @@ -12254,7 +12310,7 @@ def Invoice_Splited_Partner_From_Session_By_Inscription_Id( diction): if (local_status is not True): return local_status, my_partner, False - # Verifier que la session est valide + # Verifier que La promotion est valide is_session_id_valide = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -12263,8 +12319,8 @@ def Invoice_Splited_Partner_From_Session_By_Inscription_Id( diction): if (is_session_id_valide != 1): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide ", False + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide ", False """ Verfifer que l'inscription est valide @@ -12372,7 +12428,7 @@ def Invoice_Splited_Partner_From_Session_By_Inscription_Id( diction): print(" ### tab_apprenant = ", tab_apprenant) - # Recuperations des info de la session de formation + # Recuperations des info de La promotion de formation session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id']))}) tab_session = [] @@ -12531,12 +12587,12 @@ def Invoice_Splited_Partner_From_Session_By_Inscription_Id( diction): prix_session = 0 session_price = 0 if( "prix_session" not in session_data.keys() ): - mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La session n'a pas de prix valide") - return False, " Facturation : La session n'a pas de prix valide ", False + mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La promotion n'a pas de prix valide") + return False, " Facturation : La promotion n'a pas de prix valide ", False if( str(session_data['prix_session']).strip() == "" ): - mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La session n'a pas de prix valide (2) ") - return False, " Facturation : La session n'a pas de prix valide (2) ", False + mycommon.myprint(str(inspect.stack()[0][3]) + " Facturation : La promotion n'a pas de prix valide (2) ") + return False, " Facturation : La promotion n'a pas de prix valide (2) ", False prix_session = mycommon.tryFloat(str(session_data['prix_session'])) @@ -12809,13 +12865,13 @@ def Invoice_Splited_Partner_From_Session_By_Inscription_Id( diction): {'$set': update_data}) """ - 07/03/20204 : mettre un statut de facturation sur la session afin de voir + 07/03/20204 : mettre un statut de facturation sur La promotion afin de voir tout de suite quel session est entièrement facturée ou partiellement. regles : - Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de la session = 2 - Si au moins une inscription associée à une session est facturé ==> invoiced_statut de la session = 1 - Si non invoiced_statut de la session =0 + Si toutes les inscription associées à une session sont facturée ==> invoiced_statut de La promotion = 2 + Si au moins une inscription associée à une session est facturé ==> invoiced_statut de La promotion = 1 + Si non invoiced_statut de La promotion =0 """ nb_inscription_facture = MYSY_GV.dbname['inscription'].count_documents( {'partner_owner_recid': my_partner['recid'], @@ -13410,8 +13466,8 @@ def Audit_Session_Action_Inscrit(diction): if( is_valide_session_count != 1 ): mycommon.myprint( - str(inspect.stack()[0][3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + str(inspect.stack()[0][3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " session_data = MYSY_GV.dbname['session_formation'].find_one( {'_id': ObjectId(str(diction['session_id'])), @@ -13505,7 +13561,7 @@ pour mettre à jour la liste de ses apprenant qui sont inscrit à une session. Cette fonction s'applique uniquement au preinscrit (status = 0) use case : -lorqu'un client valide un devis, les places sont preinscrit sur la session avec des nom par defaut +lorqu'un client valide un devis, les places sont preinscrit sur La promotion avec des nom par defaut (devis_nom1, devis_nom2, etc). Le gestionnaire de formation, peut ensuire utiliser cette fonction pour demander au client de saisir ou valider les noms et emails definitifs. @@ -13577,7 +13633,7 @@ def Prepare_request_presinscription_data_validation(diction): 'client_rattachement_id'] and inscription_id_data['client_rattachement_id'] not in list_client_id): list_client_id.append(str(inscription_id_data['client_rattachement_id'])) - # Verifier que la session de formation concernée est valide + # Verifier que La promotion de formation concernée est valide is_valide_session = MYSY_GV.dbname['session_formation'].count_documents( {'_id': ObjectId(str(inscription_id_data['session_id'])), 'partner_owner_recid': str(my_partner['recid']), @@ -13585,9 +13641,9 @@ def Prepare_request_presinscription_data_validation(diction): if (is_valide_session != 1): mycommon.myprint(str(inspect.stack()[0][ - 3]) + " L'identifiant de la session de formation " + str( + 3]) + " L'identifiant de La promotion de formation " + str( inscription_id_data['session_id']) + " n'est pas valide ") - return False, " L'identifiant de la session de formation " + str( + return False, " L'identifiant de La promotion de formation " + str( inscription_id_data['session_id']) + " n'est pas valide " mycommon.myprint_debug(" list_client_id = " + str(list_client_id)) @@ -13810,8 +13866,8 @@ def Send_Email_request_presinscription_data_validation(diction): if (session_id_data is None): mycommon.myprint( str(inspect.stack()[0][ - 3]) + " L'identifiant de la session est invalide ") - return False, " L'identifiant de la session est invalide " + 3]) + " L'identifiant de La promotion est invalide ") + return False, " L'identifiant de La promotion est invalide " tab_session.append(session_id_data['_id']) class_internal_url = session_id_data['class_internal_url'] @@ -13958,7 +14014,7 @@ def Client_Update_Liste_Attendee_No_Token(diction): return False, " L'identifiant du client n'est pas valide " """ - Verifier que la session est valide + Verifier que La promotion est valide """ is_session_valide_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -13966,8 +14022,8 @@ def Client_Update_Liste_Attendee_No_Token(diction): diction['partner_recid'])}) if (is_session_valide_data is None): mycommon.myprint(str( - inspect.stack()[0][3]) + " L'identifiant de la session n'est pas valide") - return False, " L'identifiant de la session n'est pas valide " + inspect.stack()[0][3]) + " L'identifiant de La promotion n'est pas valide") + return False, " L'identifiant de La promotion n'est pas valide " JSON_attendee_response = ast.literal_eval(diction['list_attendee_data']) @@ -14173,7 +14229,7 @@ def Client_Delete_One_Attendee_No_Token(diction): return False, " L'identifiant du client n'est pas valide " """ - Verifier que la session est valide + Verifier que La promotion est valide """ is_session_valide_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['session_id'])), 'valide': '1', @@ -14181,8 +14237,8 @@ def Client_Delete_One_Attendee_No_Token(diction): diction['partner_recid'])}) if (is_session_valide_data is None): mycommon.myprint(str( - inspect.stack()[0][3]) + " L'identifiant de la session n'est pas valide") - return False, " L'identifiant de la session n'est pas valide " + inspect.stack()[0][3]) + " L'identifiant de La promotion n'est pas valide") + return False, " L'identifiant de La promotion n'est pas valide " """ @@ -14405,7 +14461,7 @@ def Add_SessionFormation_From_Quotation_Line(diction): - # La session n'existe pas, on fait une simple creation + # La promotion n'existe pas, on fait une simple creation coll_name = MYSY_GV.dbname['session_formation'] @@ -14415,9 +14471,9 @@ def Add_SessionFormation_From_Quotation_Line(diction): if (ret_val is None or not hasattr(ret_val, 'inserted_id')): mycommon.myprint( - str(inspect.stack()[0][3]) + " Impossible d'ajouter la session '" + str( + str(inspect.stack()[0][3]) + " Impossible d'ajouter La promotion '" + str( diction['code_session']) + "' ") - return False, "Impossible d'ajouter la session '" + str(diction['code_session']) + "' " + return False, "Impossible d'ajouter La promotion '" + str(diction['code_session']) + "' " """ Apres la creation de la session, on met à jour la ligne du devis en ajoutant l'id de la session @@ -14499,20 +14555,20 @@ def Add_SessionFormation_From_Quotation_Line(diction): else: nb_resa_line = nb_resa_line + 1 - return True, " La session de formation à bien été créée" + return True, " La promotion 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 La promotion de formation" """ Cette fonction permet de mettre à jour le paramettrage d'envoie automatique des documents d'une session de formation. Par exemple : -- Envoyer les convention X avant le début de la session de formation +- Envoyer les convention X avant le début de La promotion de formation /!\ : Toute mise à jour reinitialise la valeur 'statut' à 0. (sans cele le traitement ne va s'exécuté s'il a déjà ete exécuté 1 fois @@ -14585,15 +14641,15 @@ def Update_SessionFormation_Doc_Automatic_Setup(diction): return local_status, my_partner """ - Verifier la valididé de la session de formation + Verifier la valididé de La promotion de formation """ is_valide_session = MYSY_GV.dbname['session_formation'].count_documents({'_id':ObjectId(str(diction['_id'])), 'valide':'1', 'partner_owner_recid':str(my_partner['recid'])}) if( is_valide_session != 1 ): mycommon.myprint( - str(inspect.stack()[0][3]) + " - L'identifiant de la session de formation est invalide ") - return False, "L'identifiant de la session de formation est invalide" + str(inspect.stack()[0][3]) + " - L'identifiant de La promotion de formation est invalide ") + return False, "L'identifiant de La promotion de formation est invalide" is_valide_session_data = MYSY_GV.dbname['session_formation'].find_one({'_id': ObjectId(str(diction['_id'])), @@ -14680,12 +14736,12 @@ def Update_SessionFormation_Doc_Automatic_Setup(diction): " WARNING : Impossible de logguer l'historique pour l'évènement : " + str(history_event_dict)) - return True, " La session de formation à bien été mise à jour" + return True, " La promotion de formation à bien été mise à jour" except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) - return False, "Impossible mettre à jour la session de formation" + return False, "Impossible mettre à jour La promotion de formation" @@ -14834,6 +14890,6 @@ def Get_Given_SessionFormation_List_Automatic_Traitement_From(diction): 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 récupérer la session de formation" + return False, "Impossible de récupérer La promotion de formation" diff --git a/class_mgt.py b/class_mgt.py index fdc856b..f015961 100644 --- a/class_mgt.py +++ b/class_mgt.py @@ -3702,12 +3702,30 @@ def Get_Partner_All_Class_Few_Fields(diction): if (local_status is not True): return local_status, my_partner + + """ + Filtre uniquement pour la Formation continue + """ + filt_scope_class_id = {} + tab_class_id_ObjectId = [] + if( "scope" in my_partner.keys() and "class_id" in my_partner['scope'].keys() and len(my_partner['scope']['class_id']) > 0 ): + for tmp in my_partner['scope']['class_id'] : + if( tmp ): + tab_class_id_ObjectId.append((ObjectId(tmp))) + + filt_scope_class_id['_id'] = {'$in':tab_class_id_ObjectId} + + RetObject = [] val_tmp = 0 - for retVal in MYSY_GV.dbname['myclass'].find( + + + + + for retVal in MYSY_GV.dbname['myclass'].find( {"$and":[ {'partner_owner_recid': my_partner['recid'], 'valide':'1', - 'locked':'0'}, + 'locked':'0'},filt_scope_class_id]}, {'_id': 1, 'external_code': 1, 'internal_code': 1, 'internal_url': 1, } ).sort([("_id", pymongo.DESCENDING), ]): # mycommon.myprint(str(retVal)) diff --git a/competence.py b/competence.py index e05321b..adcc9d4 100644 --- a/competence.py +++ b/competence.py @@ -53,7 +53,7 @@ def Add_Competence(diction): """ Verification des input acceptés """ - field_list = ['token', 'description', 'domaine', 'metier', 'commentaire', ] + field_list = ['token', 'description', 'domaine', 'metier', 'commentaire', 'code' ] incom_keys = diction.keys() for val in incom_keys: @@ -65,7 +65,7 @@ def Add_Competence(diction): """ Verification des champs obligatoires """ - field_list_obligatoire = ['token', 'description', ] + field_list_obligatoire = ['token', 'description', 'code' ] for val in field_list_obligatoire: if val not in diction: @@ -86,6 +86,20 @@ def Add_Competence(diction): if (local_status is not True): return local_status, my_partner + """ + Verifier que ce code de compétence n'est pas déjà utilisé + """ + is_competence_code_used = MYSY_GV.dbname['competence_liste'].count_documents({'code':str(diction['code']), + 'valide':'1', + 'partner_owner_recid':str(my_partner['recid'])}) + + if( is_competence_code_used != 0 ): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " Le code de compétence "+str(diction['code'])+" est déjà utilisé ") + return False, " Le code de compétence "+str(diction['code'])+" est déjà utilisé " + + mydata = {} mydata = diction @@ -96,8 +110,8 @@ def Add_Competence(diction): if val not in diction.keys(): mydata[str(val)] = "" - mydata['date_update'] = str(datetime.now()) - mydata['update_by'] = str(my_partner['_id']) + mydata['date_created'] = str(datetime.now()) + mydata['created_by'] = str(my_partner['_id']) mydata['partner_owner_recid'] = str(my_partner['recid']) mydata['valide'] = "1" mydata['locked'] = "0" @@ -129,7 +143,7 @@ def Update_Competence(diction): """ Verification des input acceptés """ - field_list = ['token', 'description', 'competence_id', 'domaine', 'metier', 'commentaire', ] + field_list = ['token', 'description', 'competence_id', 'domaine', 'metier', 'commentaire', 'code' ] incom_keys = diction.keys() for val in incom_keys: @@ -141,7 +155,7 @@ def Update_Competence(diction): """ Verification des champs obligatoires """ - field_list_obligatoire = ['token', 'description', 'competence_id', ] + field_list_obligatoire = ['token', 'description', 'competence_id', 'code'] for val in field_list_obligatoire: if val not in diction: @@ -163,10 +177,28 @@ def Update_Competence(diction): if diction['competence_id']: competence_id = diction['competence_id'] + + local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction) if (local_status is not True): return local_status, my_partner + """ + Verifier que le code de compétence n'est pas utilisé par une autre compétence autre que celle ci + """ + + is_competence_code_used = MYSY_GV.dbname['competence_liste'].count_documents({'code': str(diction['code']), + 'valide': '1', + '_id':{'$ne':ObjectId(str(diction['competence_id']))}, + 'partner_owner_recid': str( + my_partner['recid'])}) + + if (is_competence_code_used != 0): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " Le code de compétence " + str(diction['code']) + " est déjà utilisé ") + return False, " Le code de compétence " + str(diction['code']) + " est déjà utilisé " + # Verifier que la compétence existe et est valide is_valide_opport = MYSY_GV.dbname['competence_liste'].count_documents({'_id':ObjectId(str(competence_id)), @@ -264,6 +296,10 @@ def Get_Competence_no_filter(diction): for New_retVal in MYSY_GV.dbname['competence_liste'].find(qry).sort([("_id", pymongo.DESCENDING), ]): user = New_retVal + + if( "code" not in user.keys() ): + user["code"] = "--" + user['id'] = str(val_tmp) val_tmp = val_tmp + 1 diff --git a/financial_caracteristique_mgt.py b/financial_caracteristique_mgt.py new file mode 100644 index 0000000..efb65e3 --- /dev/null +++ b/financial_caracteristique_mgt.py @@ -0,0 +1,399 @@ +""" +Ce fichier permet de gerer les caracterisques financières +d'une formation, d'une session ou toutes autre object metier. + +Par exemple il permettra de gere sur une session : +- les frais d'inscription +- les frais de scolarité +- les couts fixe (utiliser pour calculer la rentrabilité, etc). + +IMPORTANT : Il ne s'agit aucunement de faire de la comptabilité mais gerer les aspect administratif finacier +""" +import bson +import pymongo +from pymongo import MongoClient +import json +from bson import ObjectId +import re +from datetime import datetime +import prj_common as mycommon +import secrets +import inspect +import sys, os +import csv +import pandas as pd +from pymongo import ReturnDocument +import GlobalVariable as MYSY_GV +from math import isnan +import GlobalVariable as MYSY_GV +import ela_index_bdd_classes as eibdd +import email_mgt as email +import jinja2 +from flask import send_file +from xhtml2pdf import pisa +from email.message import EmailMessage +from email.mime.text import MIMEText +from email import encoders +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.mime.base import MIMEBase +from email import encoders +""" +Fonction d'ajout d'une caracteristique financière +""" +def Add_Financial_Caracteristique(diction): + try: + diction = mycommon.strip_dictionary(diction) + + """ + Verification des input acceptés + """ + field_list = ['token', 'code' , 'description', 'commentaire', 'montant', + 'related_collection', 'related_collection_id', 'type_cout', + 'inclus_calcul'] + + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list and val.startswith('my_') is False: + mycommon.myprint(str( + inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé") + return False, " Les informations fournies sont incorrectes" + + """ + Verification des champs obligatoires + """ + field_list_obligatoire = ['token', 'code', 'related_collection', 'related_collection_id'] + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint( + str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ") + 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 + + """ + Verifier que ce code de la cara fin n'est pas déjà utilisé + """ + is_competence_code_used = MYSY_GV.dbname['financial_caracteristic'].count_documents({'code':str(diction['code']), + 'valide':'1', + 'partner_owner_recid':str(my_partner['recid'])}) + + if( is_competence_code_used != 0 ): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " Le code "+str(diction['code'])+" est déjà utilisé ") + return False, " Le code "+str(diction['code'])+" est déjà utilisé " + + if( "montant" in diction.keys() and diction['montant']): + local_status, valeur = mycommon.IsFloat(str(diction['montant'])) + if (local_status is False): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " Le montant est incorrecte. la veleur attendue est un entier ou un decimal.") + return False, " Le montant est incorrecte. la veleur attendue est un entier ou un decimal. " + + + """ + Verifier la validité de la related_collection et related_collection_id + """ + is_related_collection_id_valide = MYSY_GV.dbname[str(diction['related_collection'])].count_documents({'_id':ObjectId(str(diction['related_collection_id'])), + 'valide':'1', + 'partner_owner_recid':str(my_partner['recid'])}) + + if( is_related_collection_id_valide != 1 ): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " L'identifiant de la related_collection_id est invalide ") + return False, " L'identifiant de la related_collection_id est invalide " + + + mydata = {} + + mydata = diction + del mydata['token'] + + # Initialisation des champs non envoyés à vide + for val in field_list: + if val not in diction.keys(): + mydata[str(val)] = "" + + mydata['date_created'] = str(datetime.now()) + mydata['created_by'] = str(my_partner['_id']) + mydata['partner_owner_recid'] = str(my_partner['recid']) + mydata['valide'] = "1" + mydata['locked'] = "0" + + + + inserted_id = MYSY_GV.dbname['financial_caracteristic'].insert_one(mydata).inserted_id + + if (not inserted_id): + mycommon.myprint(" Impossible de créer la caractéristique financière (2) ") + return False, " Impossible de créer la caractéristique financière (2) " + + return True, " La caractéristique financière a été correctement ajoutée " + + + 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 créer la caractéristique financière " + + +""" +Fonction de mise à jour d'une Financial_Caracteristique +""" +def Update_Financial_Caracteristique(diction): + try: + diction = mycommon.strip_dictionary(diction) + + """ + Verification des input acceptés + """ + field_list = ['token', '_id', 'code' , 'description', 'commentaire', 'montant', 'type_cout', + 'related_collection', 'related_collection_id', 'inclus_calcul' + ] + + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list and val.startswith('my_') is False: + mycommon.myprint(str( + inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé") + return False, " Les informations fournies sont incorrectes" + + """ + Verification des champs obligatoires + """ + field_list_obligatoire = ['token', '_id', 'code'] + + 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 la liste des arguments ") + 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'] + + fin_ca_id = "" + if ("_id" in diction.keys()): + if diction['_id']: + fin_ca_id = diction['_id'] + + + + local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction) + if (local_status is not True): + return local_status, my_partner + + """ + Verifier que le code de compétence n'est pas utilisée par une autre compétence autre que celle ci + """ + + is_fiance_ca_code_used = MYSY_GV.dbname['financial_caracteristic'].count_documents({'code': str(diction['code']), + 'valide': '1', + '_id':{'$ne':ObjectId(str(diction['_id']))}, + 'partner_owner_recid': str( + my_partner['recid'])}) + + if (is_fiance_ca_code_used != 0): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " Le code " + str(diction['code']) + " est déjà utilisé ") + return False, " Le code " + str(diction['code']) + " est déjà utilisé " + + + # Verifier que la caracteristique existe et est valide + is_valide_fin_ca = MYSY_GV.dbname['financial_caracteristic'].count_documents({'_id':ObjectId(str(fin_ca_id)), + 'valide':'1', + 'locked':'0', + 'partner_owner_recid':str(my_partner['recid'])}) + + + if( is_valide_fin_ca != 1): + mycommon.myprint( + str(inspect.stack()[0][3]) + " L'identifiant de la caractéristique financière est invalide ") + return False, " L'identifiant de la caractéristique financière est invalide " + + + mydata = {} + mydata = diction + del mydata['token'] + del mydata['_id'] + + + mydata['date_update'] = str(datetime.now()) + mydata['update_by'] = str(my_partner['_id']) + + result = MYSY_GV.dbname['financial_caracteristic'].find_one_and_update( + {'_id':ObjectId(str(fin_ca_id)), + 'partner_owner_recid':str(my_partner['recid'])}, + {"$set": mydata}, + upsert=False, + return_document=ReturnDocument.AFTER + ) + if ("_id" not in result.keys()): + mycommon.myprint( + " Impossible de mettre à jour la caractéristique financière (2) ") + return False, " Impossible de mettre à jour la caractéristique financière (2) " + + + + return True, " La caractéristique financière a été correctement mise à jour " + + + 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 mettre à jour la caractéristique financière " + + +""" +Recuperer la liste des Financial_Caracteristique d'un partner, sans filtres +""" +def Get_Financial_Caracteristique_no_filter(diction): + try: + diction = mycommon.strip_dictionary(diction) + + """ + Verification des input acceptés + """ + field_list = ['token', 'related_collection' , 'related_collection_id'] + + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list and val.startswith('my_') is False: + mycommon.myprint(str( + inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé") + return False, " Les informations fournies sont incorrectes" + + """ + Verification des champs obligatoires + """ + field_list_obligatoire = ['token', 'related_collection' , 'related_collection_id'] + + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint( + str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ") + 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 = 0 + + qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0', + 'related_collection':str(diction['related_collection']), 'related_collection_id':str(diction['related_collection_id'])} + + for New_retVal in MYSY_GV.dbname['financial_caracteristic'].find(qry).sort([("_id", pymongo.DESCENDING), ]): + user = New_retVal + + user['id'] = str(val_tmp) + val_tmp = val_tmp + 1 + + RetObject.append(mycommon.JSONEncoder().encode(user)) + + + #print(" #### RetObject = ", RetObject) + 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 la liste des caractéristique financières " + + +""" +Suppression d'une compétence +""" +def Delete_List_Financial_Caracteristique(diction): + try: + diction = mycommon.strip_dictionary(diction) + + """ + Verification des input acceptés + """ + field_list = ['token', 'tab_id', ] + + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list and val.startswith('my_') is False: + mycommon.myprint(str( + inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé") + return False, " Les informations fournies sont incorrectes" + + """ + Verification des champs obligatoires + """ + field_list_obligatoire = ['token', 'tab_id', ] + + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint( + str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ") + 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 + + + local_tab_ids = str(diction['tab_id']).split(",") + tab_ids_ObjectID = [] + for tmp in local_tab_ids: + if( tmp ): + tab_ids_ObjectID.append(ObjectId(str(tmp))) + + + qry = {'_id':{'$in':tab_ids_ObjectID}, 'partner_owner_recid':str(my_partner['recid'])} + + ret_del_ca_fin = MYSY_GV.dbname['financial_caracteristic'].delete_many(qry) + + return True, "La caractéristique financière a été correctement supprimée" + + + 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 supprimer la compétence " + diff --git a/main.py b/main.py index 495fa41..d33e11b 100644 --- a/main.py +++ b/main.py @@ -98,6 +98,7 @@ import base_partner_catalog_config as base_partner_catalog_config import equipe_team_mgt as equipe_team_mgt import base_class_calcul_note as base_class_calcul_note import jury_mgt as jury_mgt +import financial_caracteristique_mgt as financial_caracteristique_mgt import base_document_automatic_setup as base_document_automatic_setup @@ -2227,7 +2228,7 @@ def Add_Update_SessionFormation(): """ API de mise à jour JUSTE de l'etape, notamment utilisé dans le mode kanban -/!\ : Une session est modifiable tanque la facturation n'a pas demarré. Apres tous est bloqué +WARNING : Une session est modifiable tanque la facturation n'a pas demarré. Apres tous est bloqué """ @app.route('/myclass/api/Update_SessionFormation_Only_Step/', methods=['POST','GET']) @crossdomain(origin='*') @@ -2241,7 +2242,7 @@ def Update_SessionFormation_Only_Step(): """ API de mise à jour du parametrage d'automatisation d'envoi des documents -/!\ : Une session est modifiable tanque la facturation n'a pas demarré. Apres tous est bloqué +WARNING : Une session est modifiable tanque la facturation n'a pas demarré. Apres tous est bloqué """ @app.route('/myclass/api/Update_SessionFormation_Doc_Automatic_Setup/', methods=['POST','GET']) @crossdomain(origin='*') @@ -2400,7 +2401,7 @@ def Get_Given_SessionFormation_From_Id(): """ API de suppression d'une session de formation : -/!\ : il faut s'assurer qu'il n'y a aucune inscription avant de supprimer valide. +WARNING : il faut s'assurer qu'il n'y a aucune inscription avant de supprimer valide. Et la session est supprimé, alors supprimer toutes inscriptions (annulée) associés Ensuite supprimer les affectations d'enseignants et de materiels associée """ @@ -2781,7 +2782,7 @@ def get_Class_From_Internal_Url(): """ 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) +WARNING : 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='*') @@ -3764,7 +3765,7 @@ def recherche_business_price(): """ Cette API verifie si un client mysy existe sur chamilo. Si le client n'existe pas, il le crée avec le pack et le bon nombre de formation -/!\ : On stock dans mysy (collection partnair_account) l'id chamilo du user. +WARNING : On stock dans mysy (collection partnair_account) l'id chamilo du user. le nom du champ est : mysy_lms_user_id/ """ @app.route('/myclass/api/Check_MySy_LMS_Account/', methods=['POST','GET']) @@ -7348,7 +7349,7 @@ def get_Agenda_Event_List_With_Filter(): """ API d'ajout ou mise à jour d'un evenement -/!\ : Important : +WARNING : Important : - Pour les eemployé et le materiel, on utilise le related_collection_recid """ @app.route('/myclass/api/Add_Update_Agenda_Event/', methods=['POST','GET']) @@ -7362,7 +7363,7 @@ def Add_Update_Agenda_Event(): """ API d'ajout ou mise à jour d'un evenement pour les apprenants -/!\ : Important : +WARNING : Important : - Pour les apprenant (inscription), on utilise 'related_collection_email' car la clé des apprenant est l'email """ @app.route('/myclass/api/Add_Update_Agenda_Event_Stagiaire/', methods=['POST','GET']) @@ -10539,7 +10540,7 @@ def Get_Given_Evaluation_Planification(): """ API pour Supprimer une evaluation planifiée -/!\ : les regles de suppression ne sont pas encore implémentés +WARNING : les regles de suppression ne sont pas encore implémentés """ @app.route('/myclass/api/Delete_Evaluation_Planification/', methods=['POST','GET']) @crossdomain(origin='*') @@ -12766,6 +12767,60 @@ def Add_Update_UE_Jury_Observation(): +""" +API pour ajouter caractéristique financière à un related_collection / related_collection_id +""" +@app.route('/myclass/api/Add_Financial_Caracteristique/', methods=['POST','GET']) +@crossdomain(origin='*') +def Add_Financial_Caracteristique(): + # On recupere le corps (payload) de la requete + payload = mycommon.strip_dictionary (request.form.to_dict()) + print(" ### Add_Financial_Caracteristique : payload = ",str(payload)) + status, retval = financial_caracteristique_mgt.Add_Financial_Caracteristique( payload) + return jsonify(status=status, message=retval) + + +""" +API pour mettre à jour caractéristique financière à un related_collection / related_collection_id +""" +@app.route('/myclass/api/Update_Financial_Caracteristique/', methods=['POST','GET']) +@crossdomain(origin='*') +def Update_Financial_Caracteristique(): + # On recupere le corps (payload) de la requete + payload = mycommon.strip_dictionary (request.form.to_dict()) + print(" ### Update_Financial_Caracteristique : payload = ",str(payload)) + status, retval = financial_caracteristique_mgt.Update_Financial_Caracteristique( payload) + return jsonify(status=status, message=retval) + + +""" +API pour recuperer la liste des caractéristiques financières d'un couple related_collection / related_collection_id +""" +@app.route('/myclass/api/Get_Financial_Caracteristique_no_filter/', methods=['POST','GET']) +@crossdomain(origin='*') +def Get_Financial_Caracteristique_no_filter(): + # On recupere le corps (payload) de la requete + payload = mycommon.strip_dictionary (request.form.to_dict()) + print(" ### Get_Financial_Caracteristique_no_filter : payload = ",str(payload)) + status, retval = financial_caracteristique_mgt.Get_Financial_Caracteristique_no_filter( payload) + return jsonify(status=status, message=retval) + + + +""" +API pour supprimer une liste des caractéristiques financières d'un couple related_collection / related_collection_id +""" +@app.route('/myclass/api/Delete_List_Financial_Caracteristique/', methods=['POST','GET']) +@crossdomain(origin='*') +def Delete_List_Financial_Caracteristique(): + # On recupere le corps (payload) de la requete + payload = mycommon.strip_dictionary (request.form.to_dict()) + print(" ### Delete_List_Financial_Caracteristique : payload = ",str(payload)) + status, retval = financial_caracteristique_mgt.Delete_List_Financial_Caracteristique( payload) + return jsonify(status=status, message=retval) + + + if __name__ == '__main__': print(" debut api") context = SSL.Context(SSL.SSLv23_METHOD) @@ -12785,7 +12840,7 @@ if __name__ == '__main__': mycommon.myprint("++ LMS_BAS_URL " + str(MYSY_GV.LMS_BAS_URL) + " ++") """ - /!\ Dasactivé en dev pour pas consommer de ressource pr rien. + WARNING Dasactivé en dev pour pas consommer de ressource pr rien. """ """ scheduler = BackgroundScheduler() @@ -12798,7 +12853,7 @@ if __name__ == '__main__': scheduler.start() - # /!\ IMPORTANT /!\ : Shut down the scheduler when exiting the app + # WARNING IMPORTANT WARNING : Shut down the scheduler when exiting the app atexit.register(lambda: scheduler.shutdown()) """ @@ -12822,7 +12877,7 @@ if __name__ == '__main__': # Start the scheduler scheduler.start() - # /!\ IMPORTANT /!\ : Shut down the scheduler when exiting the app + # WARNING IMPORTANT WARNING : Shut down the scheduler when exiting the app atexit.register(lambda: scheduler.shutdown()) @@ -12844,7 +12899,7 @@ if __name__ == '__main__': # Start the scheduler scheduler.start() - # /!\ IMPORTANT /!\ : Shut down the scheduler when exiting the app + # WARNING IMPORTANT WARNING : Shut down the scheduler when exiting the app atexit.register(lambda: scheduler.shutdown()) diff --git a/survey_mgt.py b/survey_mgt.py index cefa8b5..1453a4a 100644 --- a/survey_mgt.py +++ b/survey_mgt.py @@ -3575,15 +3575,16 @@ def Get_Entity_Question_List_With_Stat_For_Given_related_collection_id(diction): node['question_question'] = str(tmp['question']) node['class_id'] = str(retval['class_id']) - if (str(tmp['type']) in ['note', 'entier']): - node['question_type'] = "Moyenne" + if( 'type' in tmp.key() ): + if (str(tmp['type']) in ['note', 'entier']): + node['question_type'] = "Moyenne" - elif (str(tmp['type'])in ['bool']): - node['question_type'] = "Somme" - else: - mycommon.myprint( - " Le paramétrage de la question ne permet pas de déterminer la nature statistiques des données ") - return False, " Le paramétrage de la question ne permet pas de déterminer la nature statistiques des données " + elif (str(tmp['type'])in ['bool']): + node['question_type'] = "Somme" + else: + mycommon.myprint( + " Le paramétrage de la question ne permet pas de déterminer la nature statistiques des données ") + return False, " Le paramétrage de la question ne permet pas de déterminer la nature statistiques des données " RetObject.append(mycommon.JSONEncoder().encode(node)) diff --git a/unite_enseignement_mgt.py b/unite_enseignement_mgt.py index 2dbb1d6..8d0304d 100644 --- a/unite_enseignement_mgt.py +++ b/unite_enseignement_mgt.py @@ -356,6 +356,7 @@ def Get_List_Unite_Enseignement_no_filter(diction): user['id'] = str(val_tmp) val_tmp = val_tmp + 1 + if (str(New_retVal['duration_unite']) == "heure"): user['duration_concat'] = str(New_retVal['duration']) + " h" elif (str(New_retVal['duration_unite']) == "jour"): @@ -669,6 +670,41 @@ def Get_Given_Unite_Enseignement(diction): user['id'] = str(val_tmp) val_tmp = val_tmp + 1 + + tab_competence = [] + tab_competence_code = [] + list_competence_code = "" + tab_competence_JSON = [] + if( "niveau_competence" in user.keys() and user['niveau_competence']): + tab_competence = str(user['niveau_competence']).split(",") + + local_cpt = 0 + for tmp in tab_competence : + if( tmp ): + local_competence_data = MYSY_GV.dbname['competence_liste'].find_one({'_id':ObjectId(str(tmp)), + 'valide':'1', + 'locked':'0', + 'partner_owner_recid':str(my_partner['recid'])}, {'_id':1, 'code':1}) + if(local_competence_data and "code" in local_competence_data.keys() ): + tab_competence_code.append(str(local_competence_data['code'])) + local_node = {} + local_node['id'] = str(local_cpt) + local_node['_id'] = str(local_competence_data['_id']) + local_node['code'] = str(local_competence_data['code']) + local_node['label'] = str(local_competence_data['code']) + + tab_competence_JSON.append(local_node) + + + local_cpt = local_cpt +1 + + + list_competence_code = ",".join(tab_competence_code) + user['list_competence_code'] = list_competence_code + # C'est chiant, mais il faut reconstituer le JSON pour le front + user['tab_competence_JSON'] = tab_competence_JSON + + RetObject.append(mycommon.JSONEncoder().encode(user))