22/03/23 - 16h

master
cherif 2023-03-22 16:10:45 +01:00
parent 69f1684618
commit 861cbfd6b3
4 changed files with 3120 additions and 47 deletions

View File

@ -1,15 +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="19/03/23 - 19h45">
<list default="true" id="1122d9e2-679f-46d6-8c4f-97e9ae4041b5" name="Changes" comment="21/03/23 - 22h">
<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$/strype_payement.py" beforeDir="false" afterPath="$PROJECT_DIR$/strype_payement.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" />
@ -369,7 +365,14 @@
<option name="project" value="LOCAL" />
<updated>1679251524150</updated>
</task>
<option name="localTasksCounter" value="43" />
<task id="LOCAL-00043" summary="21/03/23 - 22h">
<created>1679433486555</created>
<option name="number" value="00043" />
<option name="presentableId" value="LOCAL-00043" />
<option name="project" value="LOCAL" />
<updated>1679433486555</updated>
</task>
<option name="localTasksCounter" value="44" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -384,7 +387,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="15/01/2023 - 22h" />
<MESSAGE value="18/01/23 - 21h" />
<MESSAGE value="19/01/23 - 20h" />
<MESSAGE value="21/01/23 - 12h" />
@ -409,6 +411,7 @@
<MESSAGE value="16/03/23 - 17h45" />
<MESSAGE value="18/03/23 - 21h45" />
<MESSAGE value="19/03/23 - 19h45" />
<option name="LAST_COMMIT_MESSAGE" value="19/03/23 - 19h45" />
<MESSAGE value="21/03/23 - 22h" />
<option name="LAST_COMMIT_MESSAGE" value="21/03/23 - 22h" />
</component>
</project>

File diff suppressed because one or more lines are too long

View File

@ -132,14 +132,11 @@ def Create_MySy_LMS_User(diction):
salt = bcrypt.gensalt()
hashed_pwd = bcrypt.hashpw(mypasswd, salt)
print(" ### SALT = ", salt)
print(" ### hashed_pwd = ", hashed_pwd)
salt = salt.decode("UTF-8")
hashed_pwd = hashed_pwd.decode("UTF-8")
if (type(salt) is bytes):
salt = salt.decode("UTF-8")
hashed_pwd = hashed_pwd.decode("UTF-8")
print(" ### SALT DECO = ", salt)
print(" ### hashed_pwd DECO = ", hashed_pwd)
if (retval is None or "current_val" not in retval.keys()):
@ -197,7 +194,7 @@ def Create_MySy_LMS_User(diction):
"active = '1';"
try:
print(" ### my_query = ", my_query)
#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:
@ -206,7 +203,7 @@ def Create_MySy_LMS_User(diction):
return False, "Impossible de créer l'utilisateur LMS "+str({e}), False
conn.commit()
print(f"Last Inserted ID: {cur.lastrowid}")
#print(f"Last Inserted ID: {cur.lastrowid}")
""""
@ -235,7 +232,7 @@ def Create_MySy_LMS_User(diction):
# Crementation de la sequence de l'objet "lms_user_id" dans la collection : "mysy_sequence"
print(" ### current_seq_value = ", current_seq_value)
#print(" ### current_seq_value = ", current_seq_value)
new_sequence_value = int(mycommon.tryInt(current_seq_value))+1
mydata = {'current_val':new_sequence_value}
@ -335,8 +332,11 @@ def Update_Passwd_MySy_LMS_User(diction):
salt = bcrypt.gensalt()
hashed_pwd = bcrypt.hashpw(mypasswd, salt)
salt = salt.decode('UTF-8')
hashed_pwd = hashed_pwd.decode('UTF-8')
#print(" ### type(salt) = ", type(salt))
if (type(salt) is bytes):
#print(" ### ON VA DECODER")
salt = salt.decode('UTF-8')
hashed_pwd = hashed_pwd.decode('UTF-8')
conn = mariadb.connect(
@ -363,7 +363,7 @@ def Update_Passwd_MySy_LMS_User(diction):
"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)
#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:
@ -417,8 +417,11 @@ def Enable_MySy_LMS_User(diction):
salt = bcrypt.gensalt()
hashed_pwd = bcrypt.hashpw(mypasswd, salt)
#salt = salt.decode('UTF-8')
#hashed_pwd = hashed_pwd.decode('UTF-8')
#print(" ### type(salt) = ", type(salt))
if( type(salt) is bytes ):
#print(" ### ON VA DECODER")
salt = salt.decode('UTF-8')
hashed_pwd = hashed_pwd.decode('UTF-8')
updated_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
@ -436,7 +439,7 @@ def Enable_MySy_LMS_User(diction):
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)
#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:
@ -495,7 +498,7 @@ def Disable_MySy_LMS_User(diction):
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)
#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:
@ -518,7 +521,7 @@ def Disable_MySy_LMS_User(diction):
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)
#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:
@ -541,6 +544,77 @@ def Disable_MySy_LMS_User(diction):
return False, " Impossible de desactiver le compte"
"""
Cette fonction permet de desactivier les formation d'un utilisateur
"""
def Disable_MySy_LMS_Class_Of_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()
# Recuperation des formation de cet utilisateur
#print(" ### Disable_MySy_LMS_Class_Of_User : lms_user_id = ", lms_user_id)
cur.execute("SELECT c_id FROM course_rel_user WHERE user_id='"+str(lms_user_id)+"' ")
cpt_nb_disable_class = 0
for course_id in cur:
cpt_nb_disable_class = cpt_nb_disable_class + 1
mycommon.myprint(str(inspect.stack()[0][3]) + " Desactivation de la formation_id = " + str(course_id[0])+" ")
# 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(" ### Disable_MySy_LMS_Class_Of_User : 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()
#print(" ### "+str(cpt_nb_disable_class)+" formations de l'utilisateur ont été bien desactivées" )
return True, str(cpt_nb_disable_class)+" formations de l'utilisateur ont été bien desactivées"
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
@ -636,7 +710,7 @@ def Update_Pack_MySy_LMS_User(diction):
""" 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)
#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 = ""
@ -647,12 +721,12 @@ def Update_Pack_MySy_LMS_User(diction):
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)
#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])
#print(f"mysy_pack_id2: ", mysy_pack_id2[0])
mysy_pack_id_val2 = mysy_pack_id2[0]
@ -667,7 +741,7 @@ def Update_Pack_MySy_LMS_User(diction):
mysy_pack) + "' where id = '" + str(mysy_pack_id_val2) + "' "
elif( str(mysy_pack_id_val2).strip() == ""):
print(" #### la ligne n'existe pas, il faut la créer ")
#print(" #### la ligne n'existe pas, il faut la créer ")
localquery = " INSERT INTO extra_field_values SET field_id = '"+str(mysy_pack_id_val)+"' , " \
" item_id = '"+str(lms_user_id)+"'," \
" created_at = '"+now+"', updated_at = '" + now + "', " \
@ -675,10 +749,10 @@ def Update_Pack_MySy_LMS_User(diction):
print(" ### localquery = ", localquery)
#print(" ### localquery = ", localquery)
try:
print(" ### my_query update = ", localquery)
#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:
@ -699,7 +773,7 @@ def Update_Pack_MySy_LMS_User(diction):
""" 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)
#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 = ""
@ -709,12 +783,12 @@ def Update_Pack_MySy_LMS_User(diction):
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)
#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])
#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(
@ -727,7 +801,7 @@ def Update_Pack_MySy_LMS_User(diction):
mysy_nb_formation) + "' where id = '" + str(mysy_pack_id_val2) + "' "
elif (str(mysy_pack_id_val2).strip() == ""):
print(" #### la ligne n'existe pas, il faut la créer ")
#print(" #### la ligne n'existe pas, il faut la créer ")
localquery = " INSERT INTO extra_field_values SET field_id = '" + str(mysy_pack_id_val) + "' , " \
" item_id = '" + str(
lms_user_id) + "'," \
@ -736,10 +810,10 @@ def Update_Pack_MySy_LMS_User(diction):
print(" ### localquery = ", localquery)
#print(" ### localquery = ", localquery)
try:
print(" ### my_query update = ", localquery)
#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:
@ -860,7 +934,7 @@ def Check_MySy_LMS_Account(diction):
Ce pack necessite un compte LMS
"""
if( mysy_lms_user_id.strip() == ""):
print(" ### ce partenaire n'as pas de compte LMS, il faut en créer 1 ")
#print(" ### ce partenaire n'as pas de compte LMS, il faut en créer 1 ")
new_diction = {}
lastname = ""
@ -936,7 +1010,7 @@ def Check_MySy_LMS_Account(diction):
new_diction['mysy_pack'] = my_partner['pack_service']
new_diction['mysy_nb_formation'] = my_partner['nb_formation']
print(" ### stored mysy_nb_formation = ", my_partner['nb_formation'])
#print(" ### stored mysy_nb_formation = ", my_partner['nb_formation'])
local_status, local_retval, new_lms_use_id = Update_Pack_MySy_LMS_User(new_diction)
if (local_status is False):
@ -1057,13 +1131,13 @@ def Get_Active_Ftions_Mysy_and_Lms(diction):
cur = conn.cursor()
lms_count_qry = "select count(*) from course as a left join course_rel_user as b on a.id = b.c_id where a.visibility != '0' and b.user_id = '"+mysy_lms_user_id+"' "
print(" ### lms_count_qry = ", lms_count_qry)
#print(" ### lms_count_qry = ", lms_count_qry)
lms_count_exec = cur.execute(lms_count_qry)
lms_count_courses = ""
lms_count_courses_val = "0"
for lms_count_courses in cur:
print(f"lms_count_courses_val: ", lms_count_courses[0])
#print(f"lms_count_courses_val: ", lms_count_courses[0])
lms_count_courses_val = lms_count_courses[0]

View File

@ -19,6 +19,7 @@ import time
from datetime import datetime
from dateutil.relativedelta import relativedelta
import email_mgt as email_mgt
import lms_chamilo.mysy_lms as mysy_lms
# Setup Stripe python client library
load_dotenv(find_dotenv())
@ -884,7 +885,15 @@ def strip_update_subscription_qty(diction):
"""
Cette fonction permet de changer l'abonnement d'un partenaire.
Par exemple cas d'un "standard" qui passe "Gold" ou vice-versa
Par exemple cas d'un "standard" qui passe "Gold" ou vice-versa.
IMPORTANT :
Le changement de plan d'abonnement entraine la desactivation et depublucation
des formations dans MySy et dans le LMS.
Par la suite, le client pourra reactivier et republier ses formations selon
les nouvelles conditions de son abonnement.
"""
def strip_update_subscription_plan(diction):
try:
@ -933,12 +942,12 @@ def strip_update_subscription_plan(diction):
str(inspect.stack()[0][3]) + " Impossible d'annuler le payement ")
return False, " Impossible de changer l'abonnement "
"""
pack = ""
if ("pack_service" in local_ret_val.keys()):
if local_ret_val['pack_service']:
pack = local_ret_val['pack_service']
lms_user_id = ""
if ("mysy_lms_user_id" in local_ret_val.keys()):
if local_ret_val['mysy_lms_user_id']:
lms_user_id = local_ret_val['mysy_lms_user_id']
"""
qty = ""
if ("nb_formation" in local_ret_val.keys()):
if local_ret_val['nb_formation']:
@ -988,6 +997,27 @@ def strip_update_subscription_plan(diction):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - WARNING : changement qté abonnement, Impossible d'envoyer le mail de notification au partenaire")
"""
Important :
Le changement de plan d'abonnement entraine la desactivation et depublucation
des formations dans MySy et dans le LMS.
Par la suite, le client pourra reactivier et republier ses formations selon
les nouvelles conditions de son abonnement.
"""
# 1 - Depublication des formations dans MySy
#print(" ### str(local_ret_val['recid']) = ", str(partner_recid))
local_result = MYSY_GV.dbname['myclass'].update_many({'partner_owner_recid':str(partner_recid)}, {"$set":{'published':'0'}})
#print(" #### "+str(local_result.matched_count)+" Formations ont été depubliées dans MySy ")
# 2 - Desactivation des formations dans le LMS
new_diction = {}
new_diction['lms_user_id'] = lms_user_id
print(" #### new_diction = ", new_diction)
local_status, local_message = mysy_lms.Disable_MySy_LMS_Class_Of_User(new_diction)
print(" ### local_status = "+str(local_status)+" mysy_lms.Disable_MySy_LMS_Class_Of_User = "+str(local_message))
return True, " ok"