diff --git a/Inscription_mgt.py b/Inscription_mgt.py index 3495ee8..83f87a7 100644 --- a/Inscription_mgt.py +++ b/Inscription_mgt.py @@ -40,7 +40,7 @@ def AddStagiairetoClass(diction): # field_list. ''' field_list = ['nom', 'prenom', 'email', 'telephone', 'modefinancement', 'opco', - 'class_internal_url', 'session'] + 'class_internal_url', 'session_id'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: @@ -52,7 +52,7 @@ def AddStagiairetoClass(diction): Verification de la liste des champs obligatoires """ field_list_obligatoire = ['nom', 'prenom', 'email', 'telephone', 'modefinancement', 'opco', - 'class_internal_url', 'session'] + 'class_internal_url', 'session_id'] for val in field_list_obligatoire: if val not in diction: @@ -62,6 +62,29 @@ def AddStagiairetoClass(diction): mydata = {} + session_id = "" + if ("session_id" in diction.keys()): + if diction['session_id']: + mydata['session_id'] = diction['session_id'] + session_id = diction['session_id'] + + """ + Recuperation des info de la session de formation + """ + + for tmp_val in MYSY_GV.dbname['myclass'].find({"datelieu.session_id":str(session_id)}): + + tmp_date_lieu = tmp_val['datelieu'] + for val in tmp_date_lieu: + if( val['session_id'] == str(session_id) ): + mydata['date_du'] = val['date_du'] + mydata['date_au'] = val['date_au'] + mydata['ville'] = val['ville'] + mydata['code_postal'] = val['code_postal'] + mydata['adresse'] = val['adresse'] + + #print(" #### pour la session_id "+str(session_id)+" on est a "+str(session_date_du)+" - "+str(session_adresse)) + if ("nom" in diction.keys()): if diction['nom']: mydata['nom'] = diction['nom'] @@ -86,9 +109,7 @@ def AddStagiairetoClass(diction): if diction['opco']: mydata['opco'] = diction['opco'] - if ("session" in diction.keys()): - if diction['session']: - mydata['session'] = diction['session'] + if ("class_internal_url" in diction.keys()): if diction['class_internal_url']: @@ -102,16 +123,16 @@ def AddStagiairetoClass(diction): ## Verification si cette adresse n'est pas deja inscrite à cette session # print(" myquery pr demo_account = " + str(myquery)) tmp = coll_inscription.count_documents({'email':str(mydata['email']), - 'session':str( mydata['session']), + 'session_id':str( mydata['session_id']), 'class_internal_url':str(mydata['class_internal_url'])}) if( tmp > 0 ): mycommon.myprint( str(inspect.stack()[0][3]) + " - l'adresse email "+str(mydata['email'])+" est deja inscrit à la session du " - " "+str( mydata['session'])+ " ") + " "+str( mydata['session_id'])+ " ") return False, "Impossible de créer le stagiaire. l'adresse email "+str(mydata['email'])\ - +" est deja inscrit à la session du "+str( mydata['session'])+ " " + +" est deja inscrit à la session du "+str( mydata['session_id'])+ " " ret_val = coll_inscription.insert_one(mydata) @@ -134,11 +155,13 @@ def AddStagiairetoClass(diction): """ Mettre à jour les infomration d'un stgiaire + +/!\ : on NE mets PAS à jour la session, juste les info du stagiaire """ def UpdateStagiairetoClass(diction): try: field_list = ['token', 'email', 'nom', 'prenom', 'telephone', 'modefinancement', 'opco', - 'status', 'class_internal_url', 'session', 'price'] + 'status', 'class_internal_url', 'session_id', 'price'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: @@ -149,7 +172,7 @@ def UpdateStagiairetoClass(diction): """ Verification de la liste des champs obligatoires """ - field_list_obligatoire = ['token', 'email', 'class_internal_url', 'session'] + field_list_obligatoire = ['token', 'email', 'class_internal_url', 'session_id'] for val in field_list_obligatoire: if val not in diction: mycommon.myprint( @@ -175,11 +198,11 @@ def UpdateStagiairetoClass(diction): myinternal_url = diction['class_internal_url'] query_key['class_internal_url'] = diction['class_internal_url'] - mysession = "" - if ("session" in diction.keys()): - if diction['session']: - mysession = diction['session'] - query_key['session'] = diction['session'] + mysession_id = "" + if ("session_id" in diction.keys()): + if diction['session_id']: + mysession_id = diction['session_id'] + query_key['session_id'] = diction['session_id'] partner_recid = mycommon.get_parnter_recid_from_token(mytoken) if (partner_recid is False): @@ -286,7 +309,7 @@ Recuperation de liste des stagiaire d'une formation """ def GetAllClassStagiaire(diction): try: - field_list = ['token', 'class_internal_url', 'session', 'status'] + field_list = ['token', 'class_internal_url', 'session_id', 'status'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: @@ -297,7 +320,7 @@ def GetAllClassStagiaire(diction): """ Verification de la liste des champs obligatoires """ - field_list_obligatoire = ['token', 'class_internal_url', 'session'] + field_list_obligatoire = ['token', 'class_internal_url', 'session_id'] for val in field_list_obligatoire: if val not in diction: mycommon.myprint( @@ -321,10 +344,10 @@ def GetAllClassStagiaire(diction): if diction['class_internal_url']: class_internal_url = diction['class_internal_url'] - session = "" - if ("session" in diction.keys()): - if diction['session']: - session = diction['session'] + session_id = "" + if ("session_id" in diction.keys()): + if diction['session_id']: + session_id = diction['session_id'] status = "" if ("status" in diction.keys()): @@ -335,7 +358,7 @@ def GetAllClassStagiaire(diction): ## Recuperation de toutes les stagiaire rattaché à cette session coll_session = MYSY_GV.dbname['inscription'] myquery = {} - myquery['session'] = session + myquery['session_id'] = session_id myquery['class_internal_url'] = class_internal_url if(len(status) > 0 ): diff --git a/class_mgt.py b/class_mgt.py index 0350c99..a2b19fa 100644 --- a/class_mgt.py +++ b/class_mgt.py @@ -300,9 +300,12 @@ def add_class(diction): ''' - Traitement date_lieu + Traitement date_lieu. + Date_lieu definit une session et au format : + date_du;data_au;ville;code_postal; adresse ''' mydata['datelieu'] = "" + if ("date_lieu" in diction.keys()): if diction['date_lieu']: tmp_str2 = str(diction['date_lieu']).lower().replace(",", ";").replace("\r\n", "") @@ -310,14 +313,14 @@ def add_class(diction): if (not tmp_str2.endswith(";")): tmp_str2 = tmp_str2 + ";" - #print("tmp_str2 = " + tmp_str2) + # print("tmp_str2 = " + tmp_str2) if (";" not in tmp_str2): mycommon.myprint(str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : " + str( - diction['external_code']) + " sont incorrectes") + diction['external_code']) + " sont incorrectes 1") return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postal;jj/mm/aaaa-ville2-code_postal28" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse" tmp_str = tmp_str2.split( ";") # ==> ce qui va donner un tableau de : Country_Code-City : ['11/02/2012-paris-75001', '24/04/2022-marseille-13002',] @@ -325,35 +328,68 @@ def add_class(diction): dl_cpt = 0 tab_dl = [] for tmp_dl in tmp_str: - if(len(str(tmp_dl)) > 0 and ("-" in tmp_dl) ): - #print(" ###### DATE LIEU = "+tmp_dl) + if (len(str(tmp_dl)) > 0 and ("-" in tmp_dl)): + # print(" ###### DATE LIEU = "+tmp_dl) tab_date_lieu = tmp_dl.split('-') - if (len(tab_date_lieu) != 3): + if (len(tab_date_lieu) != 5): return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale29" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse" - isdate = mycommon.CheckisDate( str(tab_date_lieu[0])) - if( isdate is False ): + isdate = mycommon.CheckisDate(str(tab_date_lieu[0])) + if (isdate is False): mycommon.myprint( str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str( - diction['external_code']) + " sont incorrectes") + diction['external_code']) + " sont incorrectes 2") return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code-postal21" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 3" - val_dl = {'date':str(tab_date_lieu[0]), 'ville':str(tab_date_lieu[1]), 'code_postal':str(tab_date_lieu[2])} + isdate_au = mycommon.CheckisDate(str(tab_date_lieu[1])) + if (isdate is False): + mycommon.myprint( + str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str( + diction['external_code']) + " sont incorrectes 3") + return False, "Les Dates et Lieux de la formation " + str( + diction['external_code']) + " sont incorrectes. Le format attendu : " \ + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 2" + + print("### isdate = " + str(tab_date_lieu[0]) + " CM isdate_au = " + str(tab_date_lieu[1])) + if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') >= datetime.strptime( + str(tab_date_lieu[1]), '%d/%m/%Y')): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " - la date debut est posterieure à la date de fin pour la formation : " + str( + diction['external_code']) + " ") + return False, " La date debut est posterieure à la date de fin pour la formation : " + str( + diction['external_code']) + " " + + mytoday = datetime.today().strftime("%d/%m/%Y") + if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') < datetime.strptime(str(mytoday), + '%d/%m/%Y')): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " - la date debut est posterieure à la date du jour pour la formation : " + str( + diction['external_code']) + " ") + return False, " La date debut est posterieure à la date du jour pour la formation : " + str( + diction['external_code']) + " " + + # On créé un identifiant unique par session + session_id = mycommon.create_token_urlsafe() + val_dl = {'date_du': str(tab_date_lieu[0]), 'date_au': str(tab_date_lieu[1]), + 'ville': str(tab_date_lieu[2]), 'code_postal': str(tab_date_lieu[3]), + 'adresse': str(tab_date_lieu[4]), 'session_id':str(session_id)} tab_dl.append(val_dl) - #mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])} - #print(str(mydata['date_lieu'] )) - #print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1])) + # mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])} + # print(str(mydata['date_lieu'] )) + # print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1])) - dl_cpt = dl_cpt +1 + dl_cpt = dl_cpt + 1 elif (len(str(tmp_dl)) > 0 and ("-" not in tmp_dl)): return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postal;jj/mm/aaaa-ville2-code_postal22" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 1" mydata['datelieu'] = tab_dl @@ -643,7 +679,9 @@ def update_class(diction): mydata['zone_diffusion'] = {'country':tab_country, 'city':tab_city} ''' - Traitement date_lieu + Traitement date_lieu. + Date_lieu definit une session et au format : + date_du;data_au;ville;code_postal; adresse ''' mydata['datelieu'] = "" if ("date_lieu" in diction.keys()): @@ -653,51 +691,82 @@ def update_class(diction): if (not tmp_str2.endswith(";")): tmp_str2 = tmp_str2 + ";" - print("tmp_str2 = " + tmp_str2) + # print("tmp_str2 = " + tmp_str2) if (";" not in tmp_str2): - mycommon.myprint(str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str( - diction['external_code']) + " sont incorrectes") + mycommon.myprint(str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : " + str( + diction['external_code']) + " sont incorrectes 1") return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale23" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse" tmp_str = tmp_str2.split( - ";") # ==> ce qui va donner un tableau de : Country_Code-City : ['11/02/2012-paris-75009', '24/04/2022-marseille-13009',] - + ";") # ==> ce qui va donner un tableau de : Country_Code-City : ['11/02/2012-paris-75001', '24/04/2022-marseille-13002',] dl_cpt = 0 tab_dl = [] for tmp_dl in tmp_str: - if(len(str(tmp_dl)) > 0 and ("-" in tmp_dl) ): - #print(" ###### DATE LIEU = "+tmp_dl) + if (len(str(tmp_dl)) > 0 and ("-" in tmp_dl)): + # print(" ###### DATE LIEU = "+tmp_dl) tab_date_lieu = tmp_dl.split('-') - if( len(tab_date_lieu) != 3): + if (len(tab_date_lieu) != 5): return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale23" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse" - isdate = mycommon.CheckisDate( str(tab_date_lieu[0])) - if( isdate is False ): + isdate = mycommon.CheckisDate(str(tab_date_lieu[0])) + if (isdate is False): mycommon.myprint( str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str( - diction['external_code']) + " sont incorrectes") + diction['external_code']) + " sont incorrectes 2") return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postal25" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 3" - val_dl = {'date':str(tab_date_lieu[0]), 'ville':str(tab_date_lieu[1]), 'code_postal':str(tab_date_lieu[2])} + isdate_au = mycommon.CheckisDate(str(tab_date_lieu[1])) + if (isdate is False): + mycommon.myprint( + str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str( + diction['external_code']) + " sont incorrectes 3") + return False, "Les Dates et Lieux de la formation " + str( + diction['external_code']) + " sont incorrectes. Le format attendu : " \ + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 2" + + + print("### isdate = " + str(tab_date_lieu[0]) + " CM isdate_au = " + str(tab_date_lieu[1])) + if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') >= datetime.strptime(str(tab_date_lieu[1]), '%d/%m/%Y')): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " - la date debut est posterieure à la date de fin pour la formation : " + str( + diction['external_code']) + " ") + return False, " La date debut est posterieure à la date de fin pour la formation : " + str( + diction['external_code']) + " " + + mytoday = datetime.today().strftime("%d/%m/%Y") + if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') < datetime.strptime(str(mytoday), '%d/%m/%Y')): + mycommon.myprint( + str(inspect.stack()[0][ + 3]) + " - la date debut est posterieure à la date du jour pour la formation : " + str( + diction['external_code']) + " ") + return False, " La date debut est posterieure à la date du jour pour la formation : " + str( + diction['external_code']) + " " + # On créé un identifiant unique par session + session_id = mycommon.create_token_urlsafe() + + val_dl = {'date_du': str(tab_date_lieu[0]), 'date_au': str(tab_date_lieu[1]), + 'ville': str(tab_date_lieu[2]), 'code_postal': str(tab_date_lieu[3]), + 'adresse': str(tab_date_lieu[4]), 'session_id':str(session_id)} tab_dl.append(val_dl) - #mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])} - #print(str(mydata['date_lieu'] )) - #print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1])) + # mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])} + # print(str(mydata['date_lieu'] )) + # print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1])) - dl_cpt = dl_cpt +1 + dl_cpt = dl_cpt + 1 - elif ( len(str(tmp_dl)) > 0 and ("-" not in tmp_dl) ): + elif (len(str(tmp_dl)) > 0 and ("-" not in tmp_dl)): return False, "Les Dates et Lieux de la formation " + str( diction['external_code']) + " sont incorrectes. Le format attendu : " \ - "jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale26" + "jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 1" mydata['datelieu'] = tab_dl @@ -1537,7 +1606,6 @@ def get_class(diction): retVal['objectif'] = tmp_str[:MYSY_GV.MAX_CARACT_DETAIL] + " ..." - if ("programme" in retVal.keys()): tmp_str = retVal['programme'] if (len(retVal['programme']) > MYSY_GV.MAX_CARACT_DETAIL): @@ -2566,3 +2634,5 @@ def get_associated_class_of_partnair(diction): 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 recuperer la formation" + + diff --git a/data_indexees.csv b/data_indexees.csv index 317aaf9..3e0eb69 100644 --- a/data_indexees.csv +++ b/data_indexees.csv @@ -1,3 +1,4 @@ ,index,mots,occurence,moyenne,id_formation,source_field -0,0,logo,1,0.5,LS_PA1201913,title -1,1,realiser,1,0.5,LS_PA1201913,title +0,0,effect,1,0.33,VP14120,title +1,1,essentiel,1,0.33,VP14120,title +2,2,after,1,0.33,VP14120,title diff --git a/ela_output_test_file_pandas_2.txt b/ela_output_test_file_pandas_2.txt index 8dcf23d..9ea3e76 100644 --- a/ela_output_test_file_pandas_2.txt +++ b/ela_output_test_file_pandas_2.txt @@ -1,3 +1,4 @@ - mots occurence moyenne id_formation source_field -0 logo 1 0.5 LS_PA1201913 title -1 realiser 1 0.5 LS_PA1201913 title \ No newline at end of file + mots occurence moyenne id_formation source_field +0 effect 1 0.33 VP14120 title +1 essentiel 1 0.33 VP14120 title +2 after 1 0.33 VP14120 title \ No newline at end of file diff --git a/emargement.py b/emargement.py new file mode 100644 index 0000000..4b52b19 --- /dev/null +++ b/emargement.py @@ -0,0 +1,230 @@ +""" +Ce ficher gerer l'emargement à une session de formation +""" +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 +from datetime import timedelta + + +""" +Creation du tableau d'emargement +Au debut de la session, le formateur clique sur un bouton qui va +aller créer le tableau d'emargement. + +la finction prend en argement : +- url_formation +- session_id + +""" + +def CreateTableauEmargement(diction): + try: + ''' + # Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés + # Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API + # Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste + # field_list. + ''' + field_list = ['class_internal_url', 'session_id', 'token'] + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list: + mycommon.myprint(str(inspect.stack()[0][ + 3]) + " - Creation partner account : Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée") + return False, "Impossible de créer la liste d'emargement. Toutes les informations fournies ne sont pas valables" + + """ + Verification de la liste des champs obligatoires + """ + field_list_obligatoire = ['class_internal_url', 'session_id', 'token'] + + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint( + str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ") + return False, "Impossible de créer la liste d'emargement, Toutes les informations necessaires n'ont pas été fournies" + + mydata = {} + + my_token = "" + if ("token" in diction.keys()): + if diction['token']: + my_token = diction['token'] + + class_internal_url = "" + if ("class_internal_url" in diction.keys()): + if diction['class_internal_url']: + class_internal_url = diction['class_internal_url'] + + partner_recid = mycommon.get_parnter_recid_from_token(my_token) + if (partner_recid is False): + mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de créer la liste d'emargement ") + return False, "Impossible de créer la liste d'emargement " + + session_id = "" + if ("session_id" in diction.keys()): + if diction['session_id']: + mydata['session_id'] = diction['session_id'] + session_id = diction['session_id'] + + """ + Recuperation des info de la session de formation + """ + date_du = "" + date_au = "" + ville = "" + code_postal = "" + adresse = "" + for tmp_val in MYSY_GV.dbname['myclass'].find({"internal_url":str(class_internal_url), + "datelieu.session_id": str(session_id)}): + + tmp_date_lieu = tmp_val['datelieu'] + for val in tmp_date_lieu: + if (val['session_id'] == str(session_id)): + date_du = val['date_du'] + date_au = val['date_au'] + ville = val['ville'] + code_postal = val['code_postal'] + code_postal = val['adresse'] + + is_date_du = mycommon.CheckisDate(date_du) + is_date_au = mycommon.CheckisDate(date_au) + + if( is_date_du is False or is_date_au is False): + mycommon.myprint( + str(inspect.stack()[0][3]) + " - Impossible de créer la liste d'emargement, Les dates de la session sont incorrectes ") + return False, " Impossible de créer la liste d'emargement, Les dates de la session sont incorrectes " + + date_emargement = datetime.strptime(str(date_du), '%d/%m/%Y') + i = 0 # compteur de securité + + liste_date = [] + print(" Date du = "+str(date_du)+" CMP Date au ="+str(date_au)) + while( date_emargement < datetime.strptime(str(date_au), '%d/%m/%Y') and i < 360): + date_10 = str(date_emargement) + liste_date.append(date_10[0:10]) + i = i + 1 + date_emargement = date_emargement + timedelta(days=1) + ##print(" ### date_emargement = "+str(date_emargement) + " < "+str(datetime.strptime(str(date_au), '%d/%m/%Y') )) + + + print("#### Liste Date = "+str(liste_date)) + coll_emargement = MYSY_GV.dbname['emargement'] + + #Recuperation de la liste des participants dont l'inscription est validée + for tmp_val in MYSY_GV.dbname['inscription'].find({'session_id':str(session_id), + 'class_internal_url':str(class_internal_url), + 'status':'1'} ): + my_local_data = {} + my_local_data['email'] = tmp_val['email'] + my_local_data['nom'] = tmp_val['nom'] + my_local_data['prenom'] = tmp_val['prenom'] + my_local_data['session_id'] = tmp_val['session_id'] + my_local_data['class_internal_url'] = tmp_val['class_internal_url'] + my_local_data['date_update'] = str(datetime.now()) + + for local_date in liste_date : + new_my_local_data = {} + new_my_local_data['email'] = tmp_val['email'] + new_my_local_data['nom'] = tmp_val['nom'] + new_my_local_data['prenom'] = tmp_val['prenom'] + new_my_local_data['session_id'] = tmp_val['session_id'] + new_my_local_data['class_internal_url'] = tmp_val['class_internal_url'] + new_my_local_data['date_update'] = str(datetime.now()) + new_my_local_data['date'] = str(local_date) + new_my_local_data['matin'] = '0' + new_my_local_data['apresmidi'] = '0' + + print("### emargement insertion de : "+str(new_my_local_data)) + coll_emargement.insert_one(new_my_local_data) + + + return True, "ok" + 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 le tableau d'emargement" + + +""" +Cette fonction recuperer la liste d'emargement +""" +def GetTableauEmargement(diction): + try: + ''' + # Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés + # Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API + # Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste + # field_list. + ''' + field_list = ['class_internal_url', 'session_id', 'token'] + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list: + mycommon.myprint(str(inspect.stack()[0][ + 3]) + " - Creation partner account : Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée") + return False, "Impossible de créer la liste d'emargement. Toutes les informations fournies ne sont pas valables" + + """ + Verification de la liste des champs obligatoires + """ + field_list_obligatoire = ['class_internal_url', 'session_id', 'token'] + + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint( + str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ") + return False, "Impossible de créer la liste d'emargement, Toutes les informations necessaires n'ont pas été fournies" + + mydata = {} + + my_token = "" + if ("token" in diction.keys()): + if diction['token']: + my_token = diction['token'] + + class_internal_url = "" + if ("class_internal_url" in diction.keys()): + if diction['class_internal_url']: + class_internal_url = diction['class_internal_url'] + + partner_recid = mycommon.get_parnter_recid_from_token(my_token) + if (partner_recid is False): + mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de créer la liste d'emargement ") + return False, "Impossible de créer la liste d'emargement " + + session_id = "" + if ("session_id" in diction.keys()): + if diction['session_id']: + mydata['session_id'] = diction['session_id'] + session_id = diction['session_id'] + + + val_tmp = 1 + RetObject = [] + for retval in MYSY_GV.dbname['emargement'].find({'session_id':str(session_id), + 'class_internal_url':str(class_internal_url)}).sort([("date",pymongo.ASCENDING),]): + user = retval + user['id'] = str(val_tmp) + RetObject.append(mycommon.JSONEncoder().encode(user)) + val_tmp = val_tmp + 1 + + 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) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) + return False, "Impossible de recuperer le tableau d'emargement" diff --git a/main.py b/main.py index 6899751..ff7acf1 100644 --- a/main.py +++ b/main.py @@ -30,6 +30,7 @@ import ela_factures_mgt as factures import statistics as Stat import strype_payement as Stripe import Inscription_mgt as inscription +import emargement as emargement app = Flask(__name__) @@ -1753,6 +1754,32 @@ def GetAllClassStagiaire(): return jsonify(status=localStatus, message=message ) +""" +Cette API Crée la liste d'emargement +""" +@app.route('/myclass/api/CreateTableauEmargement/', methods=['POST','GET']) +@crossdomain(origin='*') +def CreateTableauEmargement(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### CreateTableauEmargement : payload = ",payload) + localStatus, message= emargement.CreateTableauEmargement(payload) + return jsonify(status=localStatus, message=message ) + +""" +API de recuperation du tableau d'emargement d'un session de formation +""" +@app.route('/myclass/api/GetTableauEmargement/', methods=['POST','GET']) +@crossdomain(origin='*') +def GetTableauEmargement(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### GetTableauEmargement : payload = ",payload) + localStatus, message= emargement.GetTableauEmargement(payload) + return jsonify(status=localStatus, message=message ) + + + if __name__ == '__main__': print(" debut api") context = SSL.Context(SSL.SSLv23_METHOD) diff --git a/prj_common.py b/prj_common.py index af7bc80..94fa5e1 100644 --- a/prj_common.py +++ b/prj_common.py @@ -464,7 +464,7 @@ Cette fonction verifie si une chaine est de type date jj/mm/aaaa def CheckisDate(mydate): # mydate doit etre au format : jj/mm/aaaa try: - print(" analyse de "+mydate) + #print(" analyse de "+mydate) val = datetime.strptime(mydate, '%d/%m/%Y') return True