import pymongo import zeep 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 from math import isnan import GlobalVariable as MYSY_GV import ela_index_bdd_classes as eibdd import email_mgt as email import socket import smtplib import re import requests # Connexion mariadb sur serveur import mariadb import hashlib import bcrypt """ Cette fonction créer un utilisateur lms mysy, donc dans chamilo """ def Create_MySy_LMS_User(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', 'lastname', 'firstname', 'email', 'password', 'locked', 'official_code', 'username'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: mycommon.myprint(str(inspect.stack()[0][ 3]) + " Le champ '" + val + "' n'est pas autorisé") return False, " Le champ '" + val + "' n'est pas autorisé", False ''' Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, On controle que les champs obligatoires sont presents dans la liste ''' field_list_obligatoire = ['token', 'lastname', 'firstname', 'email', 'password', 'locked', 'official_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 liste ") return False, " Toutes les informations obligatoire n'ont pas été fournies", False # recuperation des paramettre my_token = "" if ("token" in diction.keys()): if diction['token']: my_token = diction['token'] partner_recid = "" # Verification de la validité du token/mail dans le cas des user en mode connecté if (len(str(my_token)) > 0): retval = mycommon.check_partner_token_validity("", my_token) if retval is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token n'est pas valide") return False, " Impossible de créer le compte LMS", False # Recuperation du recid de l'utilisateur partner_recid = mycommon.get_parnter_recid_from_token(my_token) if partner_recid is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le token du partenaire") return False, " Impossible de recuperer le token du partenaire", False if (len(str(my_token)) <= 0): mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token est vide") return False, " Impossible de créer le compte LMS", False lastname = "" if ("lastname" in diction.keys()): if diction['lastname']: lastname = diction['lastname'] firstname = "" if ("firstname" in diction.keys()): if diction['firstname']: firstname = diction['firstname'] password = "" if ("password" in diction.keys()): if diction['password']: password = diction['password'] email = "" if ("email" in diction.keys()): if diction['email']: email = diction['email'] locked = "" if ("locked" in diction.keys()): if diction['email']: locked = diction['locked'] official_code = "" if ("official_code" in diction.keys()): if diction['official_code']: official_code = diction['official_code'] username = "" if ("username" in diction.keys()): if diction['username']: username = diction['username'] registration_date = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # Rcuperation de la sequence de l'objet "lms_user_id" dans la collection : "mysy_sequence" retval = MYSY_GV.dbname['mysy_sequence'].find_one({'related_mysy_object':'lms_user_id', 'valide':'1'}) mypasswd = password.encode('UTF-8') salt = bcrypt.gensalt() hashed_pwd = bcrypt.hashpw(mypasswd, salt) if (retval is None or "current_val" not in retval.keys()): mycommon.myprint(" Impossible de recuperer la sequence 'mysy_sequence' ") return False, "Impossible de recuperer la sequence 'mysy_sequence'",False new_lms_user_id = str(retval['prefixe'])+str(retval['current_val']) local_status, local_val = mycommon.IsInt(new_lms_user_id) if( local_status is False): mycommon.myprint(" Impossible de generer l'ID du user LMS. La valeur actuelle est ", new_lms_user_id) return False, " Impossible de generer l'ID du user LMS", False current_seq_value = str(retval['current_val']) conn = mariadb.connect( user=MYSY_GV.MYSY_MARIADB_USER, password=MYSY_GV.MYSY_MARIADB_USER_PASS, host=MYSY_GV.MYSY_MARIADB_HOST, port=MYSY_GV.MYSY_MARIADB_PORT, database=MYSY_GV.MYSY_LMS_BDD ) cur = conn.cursor() """ # retrieving information cur.execute("SELECT username, email_canonical FROM user WHERE id=?", (2,)) for username, email_canonical in cur: print(f"username: {username}, email_canonical : {email_canonical}") """ # insert information my_query = "INSERT INTO user SET id='"+str(new_lms_user_id)+"' , " \ "user_id='"+str(new_lms_user_id)+"' , " \ "lastname = '"+lastname+"', " \ "firstname = '"+firstname+"', " \ "username = '"+username+"', " \ "salt = '"+str(salt)+"'," \ " registration_date = '"+registration_date+"'," \ " credentials_expired='0', " \ "enabled='1', " \ "expired='0', " \ "created_at='" + str( registration_date) + "'," \ " updated_at='" + str( registration_date) + "', " \ " status = '1', " \ "password = '"+str(hashed_pwd)+"', " \ "locked = '0', " \ "username_canonical = '"+username+"', " \ " email_canonical = '"+email+"', " \ "email = '"+email+"'," \ " official_code = '"+official_code+"', " \ "creator_id = '1', " \ "auth_source = 'platform'," \ "roles = 'a:0:{}', " \ "language = 'french'," \ "active = '1';" try: #print(" ### my_query = ", my_query) #cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur.execute(my_query) except mariadb.Error as e: print(f"Error: {e}") mycommon.myprint(" Impossible de créer l'utilisateur LMS "+str({e})) return False, "Impossible de créer l'utilisateur LMS "+str({e}), False conn.commit() print(f"Last Inserted ID: {cur.lastrowid}") lastrowid = cur.lastrowid conn.close() # Crementation de la sequence de l'objet "lms_user_id" dans la collection : "mysy_sequence" new_sequence_value = int(current_seq_value)+1 mydata = {'current_val':new_sequence_value} ret_val2 = MYSY_GV.dbname['mysy_sequence'].find_one_and_update({'related_mysy_object':'lms_user_id', 'valide':'1'}, {"$set": mydata}, return_document=ReturnDocument.AFTER, upsert= False, ) return True, " Creation du compte LMS OK. l'id = "+str(lastrowid), str(lastrowid) 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 le compte LMS", False """ Cette fonction permet de mofifier le mot de passe de l'utilisateur """ def Update_Passwd_MySy_LMS_User(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', 'new_password', 'lms_user_id'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: mycommon.myprint(str(inspect.stack()[0][ 3]) + " Le champ '" + val + "' n'est pas autorisé") return False, " Le champ '" + val + "' n'est pas autorisé", False ''' Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, On controle que les champs obligatoires sont presents dans la liste ''' field_list_obligatoire = ['token', 'new_password', 'lms_user_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, " Toutes les informations obligatoire n'ont pas été fournies", False # recuperation des paramettre my_token = "" if ("token" in diction.keys()): if diction['token']: my_token = diction['token'] partner_recid = "" # Verification de la validité du token/mail dans le cas des user en mode connecté if (len(str(my_token)) > 0): retval = mycommon.check_partner_token_validity("", my_token) if retval is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token n'est pas valide") return False, " Impossible de mettre à jour le compte LMS", False # Recuperation du recid de l'utilisateur partner_recid = mycommon.get_parnter_recid_from_token(my_token) if partner_recid is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le token du partenaire") return False, " Impossible de recuperer le token du partenaire", False if (len(str(my_token)) <= 0): mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token est vide") return False, " Impossible de mettre à jour le compte LMS", False newpassword = "" if ("new_password" in diction.keys()): if diction['new_password']: newpassword = diction['new_password'] lms_user_id = "" if ("lms_user_id" in diction.keys()): if diction['lms_user_id']: lms_user_id = diction['lms_user_id'] updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S") mypasswd = newpassword.encode('UTF-8') salt = bcrypt.gensalt() hashed_pwd = bcrypt.hashpw(mypasswd, salt) conn = mariadb.connect( user=MYSY_GV.MYSY_MARIADB_USER, password=MYSY_GV.MYSY_MARIADB_USER_PASS, host=MYSY_GV.MYSY_MARIADB_HOST, port=MYSY_GV.MYSY_MARIADB_PORT, database=MYSY_GV.MYSY_LMS_BDD ) cur = conn.cursor() """ # retrieving information cur.execute("SELECT username, email_canonical FROM user WHERE id=?", (2,)) for username, email_canonical in cur: print(f"username: {username}, email_canonical : {email_canonical}") """ # insert information my_query = "UPDATE user SET salt = '" + str(salt) + "', credentials_expired='0', " \ "updated_at='" + str( updated_at) + " ', " \ "password = '" + str( hashed_pwd) + "' " \ " WHERE " \ "id='" + str(lms_user_id) + "' " \ "AND user_id='" + str( lms_user_id) + "' AND enabled='1' AND status = '1' AND active = '1' ;" try: print(" ### my_query update = ", my_query) # cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur.execute(my_query) except mariadb.Error as e: #print(f"Error: {e}") mycommon.myprint(" Impossible de créer l'utilisateur LMS " + str({e})) return False, "Impossible de créer l'utilisateur LMS " + str({e}), False conn.commit() #print(f"Last Inserted ID: {cur.lastrowid}") lastrowid = cur.lastrowid conn.close() return True, " Creation du compte LMS OK. l'id modifié est = " + str(lastrowid), str(lastrowid) 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 le compte LMS", False """ Cette fonction reactive un compte utilisation dans chamilo. on ne reactive pas les formations, s'il y en a. l'utilisateur doit contacter le support pr cela """ def Enable_MySy_LMS_User(diction): try: field_list_obligatoire = ['lms_user_id','password' ] 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, " Toutes les informations obligatoire n'ont pas été fournies" # recuperation des paramettre lms_user_id = "" if ("lms_user_id" in diction.keys()): if diction['lms_user_id']: lms_user_id = diction['lms_user_id'] password = "" if ("password" in diction.keys()): if diction['password']: password = diction['password'] mypasswd = password.encode('UTF-8') salt = bcrypt.gensalt() hashed_pwd = bcrypt.hashpw(mypasswd, salt) updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S") conn = mariadb.connect( user=MYSY_GV.MYSY_MARIADB_USER, password=MYSY_GV.MYSY_MARIADB_USER_PASS, host=MYSY_GV.MYSY_MARIADB_HOST, port=MYSY_GV.MYSY_MARIADB_PORT, database=MYSY_GV.MYSY_LMS_BDD ) cur = conn.cursor() # Reactivation du compte dans chamilo my_query = "UPDATE user SET active='1', enabled = '1', " \ " salt = '"+str(salt)+"', password = '"+str(hashed_pwd)+"' WHERE id='" + str(lms_user_id) + "' AND user_id='" + str( lms_user_id) + "' ;" try: print(" ### my_query update = ", my_query) # cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur.execute(my_query) except mariadb.Error as e: #print(f"Error: {e}") mycommon.myprint(" Impossible de reactiver l'utilisateur LMS " + str({e})) return False, "Impossible de reactiver l'utilisateur LMS " + str({e}) conn.commit() conn.close() return True, " Le compte a été correctement activié" 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 reactiver le compte LMS" """ Cette fonction Desactivment un compte chamilo ansi que les formations associée à ce compte """ def Disable_MySy_LMS_User(diction): try: field_list_obligatoire = ['lms_user_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, " Toutes les informations obligatoire n'ont pas été fournies" # recuperation des paramettre lms_user_id = "" if ("lms_user_id" in diction.keys()): if diction['lms_user_id']: lms_user_id = diction['lms_user_id'] updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S") conn = mariadb.connect( user=MYSY_GV.MYSY_MARIADB_USER, password=MYSY_GV.MYSY_MARIADB_USER_PASS, host=MYSY_GV.MYSY_MARIADB_HOST, port=MYSY_GV.MYSY_MARIADB_PORT, database=MYSY_GV.MYSY_LMS_BDD ) cur = conn.cursor() cur2 = conn.cursor() # Desactivation du compte : # Reactivation du compte dans chamilo # insert information my_query = "UPDATE user SET active='0', enabled = '0', " \ " updated_at='" + str(updated_at) + "' WHERE id='" + str(lms_user_id) + "' AND user_id='" + str(lms_user_id) + "' ;" try: print(" ### my_query update = ", my_query) # cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur.execute(my_query) except mariadb.Error as e: # print(f"Error: {e}") mycommon.myprint(" Impossible de créer l'utilisateur LMS " + str({e})) return False, "Impossible de créer l'utilisateur LMS " + str({e}) conn.commit() # Recuperation des formation de cet utilisateur cur.execute("SELECT c_id FROM course_rel_user WHERE user_id="+str(lms_user_id)) for course_id in cur: mycommon.myprint(str(inspect.stack()[0][3]) + " Desactivation de la formation_id = " + str(course_id)+" ") # Desactivation du compte dans chamilo # insert information my_query = "UPDATE course SET subscribe='0', visibility = '0' , expiration_date='" + str(updated_at) + "' WHERE id='" + str(course_id[0]) + "' ;" try: print(" ### my_query update = ", my_query) # cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur2.execute(my_query) except mariadb.Error as e: print(f"Error: {e}") mycommon.myprint(str(inspect.stack()[0][3]) + " IMPOSSIBLE DE Desactiver la formation_id = " + str(course_id[0])) conn.commit() # Desactivation des formations créées par ce compte utilisateur conn.close() return True, " Le compte a été correctement desactive" 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 desactiver le compte" """ Cette fonction permet de mettre à jour - le pack abonnement et - le nombre max de formations """ def Update_Pack_MySy_LMS_User(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', 'lms_user_id', 'mysy_pack', 'mysy_nb_formation'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: mycommon.myprint(str(inspect.stack()[0][ 3]) + " Le champ '" + val + "' n'est pas autorisé") return False, " Le champ '" + val + "' n'est pas autorisé", False ''' Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, On controle que les champs obligatoires sont presents dans la liste ''' field_list_obligatoire = ['token', 'lms_user_id', 'mysy_pack', 'mysy_nb_formation'] 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, " Toutes les informations obligatoire n'ont pas été fournies", False # recuperation des paramettre my_token = "" if ("token" in diction.keys()): if diction['token']: my_token = diction['token'] partner_recid = "" # Verification de la validité du token/mail dans le cas des user en mode connecté if (len(str(my_token)) > 0): retval = mycommon.check_partner_token_validity("", my_token) if retval is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token n'est pas valide") return False, " Impossible de mettre à jour le compte LMS", False # Recuperation du recid de l'utilisateur partner_recid = mycommon.get_parnter_recid_from_token(my_token) if partner_recid is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le token du partenaire") return False, " Impossible de recuperer le token du partenaire", False if (len(str(my_token)) <= 0): mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token est vide") return False, " Impossible de mettre à jour le compte LMS", False mysy_pack = "" if ("mysy_pack" in diction.keys()): if diction['mysy_pack']: mysy_pack = diction['mysy_pack'] mysy_nb_formation = "" if ("mysy_nb_formation" in diction.keys()): if diction['mysy_nb_formation']: mysy_nb_formation = diction['mysy_nb_formation'] lms_user_id = "" if ("lms_user_id" in diction.keys()): if diction['lms_user_id']: lms_user_id = diction['lms_user_id'] updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S") conn = mariadb.connect( user=MYSY_GV.MYSY_MARIADB_USER, password=MYSY_GV.MYSY_MARIADB_USER_PASS, host=MYSY_GV.MYSY_MARIADB_HOST, port=MYSY_GV.MYSY_MARIADB_PORT, database=MYSY_GV.MYSY_LMS_BDD ) cur = conn.cursor() """ MISE à JOUR DU mysy_pack """ query_get_mysy_pack_id = "select id from extra_field where variable = 'mysy_pack' " print(" ### query_get_mysy_pack_id = ", query_get_mysy_pack_id) mysy_pack_id = cur.execute(query_get_mysy_pack_id) mysy_pack_id_val = "" for mysy_pack_id in cur: print(f"mysy_pack_id: ", mysy_pack_id[0] ) mysy_pack_id_val = mysy_pack_id[0] query_2 = "select id from extra_field_values where field_id = '"+str(mysy_pack_id_val)+"' and item_id = '"+str(lms_user_id)+"' " print(" ### query_2 = ", query_2) mysy_pack_id2 = cur.execute(query_2) mysy_pack_id_val2 = "" for mysy_pack_id2 in cur: print(f"mysy_pack_id2: ", mysy_pack_id2[0]) mysy_pack_id_val2 = mysy_pack_id2[0] query_get_mysy_nb_formation_id = "select id from extra_field where variable = '" + str(mysy_nb_formation) + "' " localquery = "update extra_field_values set extra_field_values.value ='"+str(mysy_pack)+"' where id = '"+str(mysy_pack_id_val2)+"' " print(" ### localquery = ", localquery) try: print(" ### my_query update = ", localquery) # cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur.execute(localquery) except mariadb.Error as e: # print(f"Error: {e}") mycommon.myprint(" Impossible de créer l'utilisateur LMS " + str({e})) return False, "Impossible de créer l'utilisateur LMS " + str({e}), False conn.commit() """ MISE à JOUR DU mysy_nb_formation """ query_get_mysy_pack_id = "select id from extra_field where variable = 'mysy_nb_formation' " print(" ### query_get_mysy_pack_id = ", query_get_mysy_pack_id) mysy_pack_id = cur.execute(query_get_mysy_pack_id) mysy_pack_id_val = "" for mysy_pack_id in cur: print(f"mysy_pack_id: ", mysy_pack_id[0]) mysy_pack_id_val = mysy_pack_id[0] query_2 = "select id from extra_field_values where field_id = '" + str( mysy_pack_id_val) + "' and item_id = '" + str(lms_user_id) + "' " print(" ### query_2 = ", query_2) mysy_pack_id2 = cur.execute(query_2) mysy_pack_id_val2 = "" for mysy_pack_id2 in cur: print(f"mysy_pack_id2: ", mysy_pack_id2[0]) mysy_pack_id_val2 = mysy_pack_id2[0] query_get_mysy_nb_formation_id = "select id from extra_field where variable = '" + str( mysy_nb_formation) + "' " localquery = "update extra_field_values set extra_field_values.value ='" + str( mysy_nb_formation) + "' where id = '" + str(mysy_pack_id_val2) + "' " print(" ### localquery = ", localquery) try: print(" ### my_query update = ", localquery) # cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB")) cur.execute(localquery) except mariadb.Error as e: # print(f"Error: {e}") mycommon.myprint(" Impossible de créer l'utilisateur LMS " + str({e})) return False, "Impossible de créer l'utilisateur LMS " + str({e}), False conn.commit() return True, " Creation du compte LMS OK. l'id modifié est = ", 1 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 le compte LMS", False """ Cette fonction 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. le nom du champ est : mysy_lms_user_id/ """ def Check_MySy_LMS_User(diction): try: # Verification des champs field_list = ['token', ] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: mycommon.myprint(str(inspect.stack()[0][ 3]) + " Le champ '" + val + "' n'est pas autorisé") return False, str(inspect.stack()[0][3]) +" Le champ '" + val + "' n'est pas autorisé" ''' Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, On controle que les champs obligatoires sont presents dans la liste ''' field_list_obligatoire = ['token', ] 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, str(inspect.stack()[0][ 3]) +" Toutes les informations obligatoire n'ont pas été fournies" # recuperation des paramettre my_token = "" if ("token" in diction.keys()): if diction['token']: my_token = diction['token'] partner_recid = "" # Verification de la validité du token/mail dans le cas des user en mode connecté if (len(str(my_token)) > 0): retval = mycommon.check_partner_token_validity("", my_token) if retval is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token n'est pas valide") return False, " Impossible de créer le compte LMS", False # Recuperation du recid de l'utilisateur partner_recid = mycommon.get_parnter_recid_from_token(my_token) if partner_recid is False: mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le token du partenaire") return False, " Impossible de recuperer le token du partenaire", False if (len(str(my_token)) <= 0): mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token est vide") return False, " Impossible de créer le compte LMS", False # Recuperation des données du partenaire local_status, my_partner = mycommon.get_partner_data_from_recid(partner_recid) if( local_status is False ): mycommon.myprint(str(inspect.stack()[0][3]) + " - impossible de recuperer les données du partenaire") return False, str(inspect.stack()[0][3]) +" - impossible de recuperer les données du partenaire" mysy_lms_user_id = "" if ("mysy_lms_user_id" in my_partner.keys()): if diction['mysy_lms_user_id']: mysy_lms_user_id = diction['mysy_lms_user_id'] pack_service = "" if ("pack_service" in my_partner.keys()): if diction['pack_service']: pack_service = diction['pack_service'] # Recuperation des caracterisques du pack pack_data = MYSY_GV.dbname['pack'].find_one({'code_pack':str(pack_service).lower()}) if( pack_data is None ): mycommon.myprint(str(inspect.stack()[0][3]) + " - impossible de recuperer les données du pack (1)") return False, str(inspect.stack()[0][3]) + " - impossible de recuperer les données du pack (1)" lms_count = "" if ("lms_count" in pack_data.keys()): if diction['lms_count']: lms_count = diction['lms_count'] if (lms_count != "0" and lms_count != "1") : mycommon.myprint(str(inspect.stack()[0][3]) + " - lms_count est incorrecte ") return False, str(inspect.stack()[0][3]) + " - lms_count est incorrecte " if( mysy_lms_user_id.strip() == ""): print(" ### ce partenaire n'as pas de compte LMS ") else: print(" ### ce partenaire A un compte. ") """ /!\ : si le pack utilisateur necessite d'avoir un compte LMS, 3 cas de figures se posent : 1 - C'est un tout nouveau compte, alors on le crée simplement 2 - CAS CRITIQUE : C'est un ancien compte qui a changé plusieurs de fois de pack. il est passé d'un pack avec LMS vers un compte sans LMS puis vers un compte avec LMS. dans cas, on reative simplement le compte. 3 - Cas d'un client qui passe d'un pack avec LMS vers un pack sans LMS, dans ce cas on desactive le compte LSM, on desacrive ses formations aussi. """ return True, " Creation du compte LMS OK. l'id = " 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 le compte LMS : Check_MySy_LMS_User ", False