18/03/23 - 17h45
parent
3591ab90bc
commit
b2594e981b
|
@ -1,16 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="1122d9e2-679f-46d6-8c4f-97e9ae4041b5" name="Changes" comment="06/03/23 - 17h45">
|
||||
<change afterPath="$PROJECT_DIR$/lms_chamilo/local_import.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/lms_chamilo/mysy_lms.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/tools_cherif/__init__.py" afterDir="false" />
|
||||
<list default="true" id="1122d9e2-679f-46d6-8c4f-97e9ae4041b5" name="Changes" comment="16/03/23 - 17h45">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/GlobalVariable.py" beforeDir="false" afterPath="$PROJECT_DIR$/GlobalVariable.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/email_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/email_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/lms_chamilo/mysy_lms.py" beforeDir="false" afterPath="$PROJECT_DIR$/lms_chamilo/mysy_lms.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/tools_cherif/tools_cherif.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools_cherif/tools_cherif.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -349,7 +344,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1678074797958</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="40" />
|
||||
<task id="LOCAL-00040" summary="16/03/23 - 17h45">
|
||||
<created>1678993462192</created>
|
||||
<option name="number" value="00040" />
|
||||
<option name="presentableId" value="LOCAL-00040" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1678993462192</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="41" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
@ -364,7 +366,6 @@
|
|||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="27/12/2022 - 16h00" />
|
||||
<MESSAGE value="09/01/22 à 11h" />
|
||||
<MESSAGE value="13/01/22 à 20h" />
|
||||
<MESSAGE value="15/01/2023 - 22h" />
|
||||
|
@ -389,17 +390,7 @@
|
|||
<MESSAGE value="24/02/23 - 23h23" />
|
||||
<MESSAGE value="28/02/23 - 17h45" />
|
||||
<MESSAGE value="06/03/23 - 17h45" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="06/03/23 - 17h45" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/Session_Formation.py</url>
|
||||
<line>4</line>
|
||||
<option name="timeStamp" value="2" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
</breakpoint-manager>
|
||||
<MESSAGE value="16/03/23 - 17h45" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="16/03/23 - 17h45" />
|
||||
</component>
|
||||
</project>
|
1715
Log/log_file.log
1715
Log/log_file.log
File diff suppressed because one or more lines are too long
|
@ -227,7 +227,6 @@ def Create_MySy_LMS_User(diction):
|
|||
Cette fonction permet de mofifier le mot de passe de l'utilisateur
|
||||
"""
|
||||
|
||||
|
||||
def Update_Passwd_MySy_LMS_User(diction):
|
||||
try:
|
||||
|
||||
|
@ -353,6 +352,158 @@ def Update_Passwd_MySy_LMS_User(diction):
|
|||
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
|
||||
|
@ -531,3 +682,123 @@ def Update_Pack_MySy_LMS_User(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 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
|
25
main.py
25
main.py
|
@ -2404,6 +2404,31 @@ def Update_Pack_MySy_LMS_User():
|
|||
localStatus, message, lms_user_id = mysy_lms.Update_Pack_MySy_LMS_User(payload)
|
||||
return jsonify(status=localStatus, message=message, lms_user_id=lms_user_id)
|
||||
|
||||
"""
|
||||
Cette API permet de desactivier un utilisateur ainsi que les formations qui sont rattachées
|
||||
"""
|
||||
@app.route('/myclass/api/Disable_MySy_LMS_User/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def Disable_MySy_LMS_User():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = request.form.to_dict()
|
||||
print(" ### Disable_MySy_LMS_User : payload = ",payload)
|
||||
localStatus, message = mysy_lms.Disable_MySy_LMS_User(payload)
|
||||
return jsonify(status=localStatus, message=message)
|
||||
|
||||
|
||||
"""
|
||||
Cette API permet de Reactivier le compte utilisateur. on ne reactive pas les formations, s'il y en a. l'utilisateur doit contacter le support pr cela
|
||||
"""
|
||||
@app.route('/myclass/api/Enable_MySy_LMS_User/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def Enable_MySy_LMS_User():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = request.form.to_dict()
|
||||
print(" ### Enable_MySy_LMS_User : payload = ",payload)
|
||||
localStatus, message = mysy_lms.Enable_MySy_LMS_User(payload)
|
||||
return jsonify(status=localStatus, message=message)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue