diff --git a/Inscription_mgt.py b/Inscription_mgt.py index 327f873..ba35165 100644 --- a/Inscription_mgt.py +++ b/Inscription_mgt.py @@ -294,6 +294,7 @@ def GetStagiaire(diction): str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ") return False, "Impossible de recuperer le stagiaire, Toutes les informations necessaires n'ont pas été fournies" + return True except Exception as e: diff --git a/Session_Formation.py b/Session_Formation.py new file mode 100644 index 0000000..bca4d60 --- /dev/null +++ b/Session_Formation.py @@ -0,0 +1,195 @@ +""" +Ce fichier gere les sessions 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 + + +""" +Fonction de creation et mise à jour d'une session de formation. + +la clée est : +- formation_session_id, +- class_internal_url +""" +def Add_Update_SessionFormation(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 = ['token', 'date_debut', 'date_fin', 'nb_participant', 'formation_session_id', 'class_internal_url',] + 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 le stagiaire. Toutes les informations fournies ne sont pas valables" + + """ + Verification de la liste des champs obligatoires + """ + field_list_obligatoire = ['token', 'formation_session_id', 'class_internal_url',] + + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint( + str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ") + return False, "Impossible de créer le stagiaire, Toutes les informations necessaires n'ont pas été fournies" + + mydata = {} + query_key = {} + + 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']: + mydata['class_internal_url'] = diction['formation_session_id'] + query_key['class_internal_url'] = diction['formation_session_id'] + 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 " + + formation_session_id = "" + if ("formation_session_id" in diction.keys()): + if diction['formation_session_id']: + mydata['formation_session_id'] = diction['formation_session_id'] + query_key['formation_session_id'] = diction['formation_session_id'] + session_id = diction['formation_session_id'] + + + if ("date_debut" in diction.keys()): + if diction['date_debut']: + mydata['date_debut'] = diction['date_debut'] + + if ("date_fin" in diction.keys()): + if diction['date_fin']: + mydata['date_fin'] = diction['date_fin'] + + if ("nb_participant" in diction.keys()): + if diction['nb_participant']: + mydata['nb_participant'] = diction['nb_participant'] + + mydata['date_update'] = str(datetime.now()) + mydata['valide'] = "1" + + + coll_name = MYSY_GV.dbname['session_formation'] + ret_val = coll_name.find_one_and_update( + query_key, + {"$set": mydata}, + upsert=True, + return_document=ReturnDocument.AFTER + ) + + if (ret_val['_id'] is False): + mycommon.myprint( + str(inspect.stack()[0][3]) + " : Impossible d'ajouter le mode de payement") + return False, "Impossible d'ajouter le mode de payement" + + + + return True, " La session de formation à bien été crééé" + + + 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" + + +""" +Fonction de recuperation d'une session de formation +""" + +def GetSessionFormation(diction): + try: + + field_list = ['token', 'class_internal_url', 'formation_session_id', ] + 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, "de recuperer la liste des stagiaires . Toutes les informations fournies ne sont pas valables" + + """ + Verification de la liste des champs obligatoires + """ + field_list_obligatoire = ['token', 'class_internal_url', 'formation_session_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 liste ") + return False, "Impossible de recuperer la liste des stagiaires, Toutes les informations necessaires n'ont pas été fournies" + + # Recuperation du recid du partner + mydata = {} + mytoken = "" + if ("token" in diction.keys()): + if diction['token']: + mytoken = diction['token'] + + partner_recid = mycommon.get_parnter_recid_from_token(mytoken) + if (partner_recid is False): + mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer la liste des stagiaires, ") + return False, "Impossible de recuperer la liste des stagiaires, Les informations d'identification sont incorrectes " + + class_internal_url = "" + if ("class_internal_url" in diction.keys()): + if diction['class_internal_url']: + class_internal_url = diction['class_internal_url'] + + formation_session_id = "" + if ("formation_session_id" in diction.keys()): + if diction['formation_session_id']: + formation_session_id = diction['session_id'] + + coll_session = MYSY_GV.dbname['session_formation'] + myquery = {} + myquery['formation_session_id'] = formation_session_id + myquery['class_internal_url'] = class_internal_url + + + RetObject = [] + + for retval in coll_session.find(myquery): + RetObject.append(mycommon.JSONEncoder().encode(retval)) + + 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 la session de formation" + + diff --git a/main.py b/main.py index 12e4b97..46b2f56 100644 --- a/main.py +++ b/main.py @@ -31,6 +31,7 @@ import statistics as Stat import strype_payement as Stripe import Inscription_mgt as inscription import emargement as emargement +import Session_Formation as SF app = Flask(__name__) @@ -1791,6 +1792,33 @@ def UpdateUserEmargementDate(): return jsonify(status=localStatus, message=message ) +""" +API de creation d'une session de formation +""" +@app.route('/myclass/api/Add_Update_SessionFormation/', methods=['POST','GET']) +@crossdomain(origin='*') +def Add_Update_SessionFormation(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### Add_Update_SessionFormation : payload = ",str(payload)) + localStatus, message= SF.Add_Update_SessionFormation(payload) + return jsonify(status=localStatus, message=message ) + + + +""" +API de recuperation session de formation +""" +@app.route('/myclass/api/GetSessionFormation/', methods=['POST','GET']) +@crossdomain(origin='*') +def GetSessionFormation(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### GetSessionFormation : payload = ",str(payload)) + localStatus, message= SF.GetSessionFormation(payload) + return jsonify(status=localStatus, message=message ) + + if __name__ == '__main__': print(" debut api")