13/05/23 - 23h
parent
0b79324237
commit
c4ecc8d3ab
|
@ -1,12 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="12/05/23 - 19h">
|
||||
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="13/05/23 - 17h">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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$/class_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/class_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$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -189,7 +187,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1683911749819</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="19" />
|
||||
<task id="LOCAL-00019" summary="13/05/23 - 17h">
|
||||
<created>1683991333030</created>
|
||||
<option name="number" value="00019" />
|
||||
<option name="presentableId" value="LOCAL-00019" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1683991333030</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="20" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
@ -220,6 +225,7 @@
|
|||
<MESSAGE value="29/04/23 - 21h" />
|
||||
<MESSAGE value="05/05/23 - 21h" />
|
||||
<MESSAGE value="12/05/23 - 19h" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="12/05/23 - 19h" />
|
||||
<MESSAGE value="13/05/23 - 17h" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="13/05/23 - 17h" />
|
||||
</component>
|
||||
</project>
|
|
@ -22,6 +22,7 @@ import ela_index_bdd_classes as eibdd
|
|||
import email_mgt as email
|
||||
|
||||
|
||||
|
||||
class JSONEncoder(json.JSONEncoder):
|
||||
def default(self, o):
|
||||
if isinstance(o, ObjectId):
|
||||
|
|
|
@ -27,7 +27,8 @@ import hashlib
|
|||
import bcrypt
|
||||
from pymongo import ReturnDocument
|
||||
import paramiko
|
||||
|
||||
from Levenshtein import distance as lev
|
||||
import class_mgt as class_mgt
|
||||
|
||||
"""
|
||||
Test connexion SQL sur localhost Phpmyadmin
|
||||
|
@ -2793,6 +2794,13 @@ Depuis le lms, un bouton qui appelle le webservice en passant en argument
|
|||
Etape 2 :
|
||||
Dans mysy search (moteur), on se connecte dans le lms, pour collecter les infos et les dupliquer et publier dans mysy search
|
||||
|
||||
Etape 3 :
|
||||
Une fois la formation créer et/ou publier, mettre l'url (mysy search) dans la table 'course' de mysy lms.
|
||||
Ceci permettra de mettre un bouton de visualisation dans mysy lms.
|
||||
|
||||
Etape 4 : (pas fait encore)
|
||||
Apres la creation de la formation, on crée la session associée. car dans le cadre du LMS, une formation = 1 session (moteur)
|
||||
|
||||
"""
|
||||
def Create_Update_Class_From_Lms(diction):
|
||||
try:
|
||||
|
@ -2855,13 +2863,118 @@ def Create_Update_Class_From_Lms(diction):
|
|||
)
|
||||
|
||||
cur = conn.cursor()
|
||||
myquery = "SELECT * FROM c_course_description WHERE c_id='" + str(lms_class_id)+"' "
|
||||
myquery = "SELECT a.title, a.content, b.code, b.title, b.full_internal_url FROM c_course_description as a left join course as b ON a.c_id = b.id WHERE c_id= '"+ str(lms_class_id)+"' "
|
||||
|
||||
print(" ### myquery = ", myquery)
|
||||
cur.execute(myquery)
|
||||
for courses_info in cur:
|
||||
print(" ### les information de la formation : ", str(courses_info))
|
||||
conn.close()
|
||||
"""
|
||||
/!\: Important :
|
||||
Dans mysy lms, l'utilisateur crée un titre, puis une description. ex : "objectif": "detail de l'objectif" ou "méthode":"detail de la
|
||||
de la méthode", etc.
|
||||
Pour gérer les fautes de frappe dans l'identification des titre, on va utiliser le calcul de distance de Levenshtein
|
||||
"""
|
||||
|
||||
# La liste des champs necessaires à la creation d'une formation dans moteur de recherche
|
||||
field_list = ['description', 'trainer', 'institut_formation' 'plus_produit', 'mots_cle',
|
||||
'objectif', 'programme', 'prerequis', 'pourqui']
|
||||
|
||||
new_diction = {}
|
||||
local_class_code = ""
|
||||
local_class_title = ""
|
||||
|
||||
for courses_info in cur:
|
||||
pave_title_tab = str(courses_info[0]).split(" ")
|
||||
for local_val in pave_title_tab:
|
||||
|
||||
if( lev('description',str(local_val).lower() ) <= 2 ):
|
||||
new_diction['description'] = courses_info[1]
|
||||
|
||||
if (lev('objectif', str(local_val).lower()) <= 2):
|
||||
new_diction['objectif'] = courses_info[1]
|
||||
|
||||
if (lev('programme', str(local_val).lower()) <= 2):
|
||||
new_diction['programme'] = courses_info[1]
|
||||
|
||||
if (lev('prerequis', str(local_val).lower()) <= 2):
|
||||
new_diction['prerequis'] = courses_info[1]
|
||||
|
||||
if (lev('pourqui', str(local_val).lower()) <= 2):
|
||||
new_diction['pourqui'] = courses_info[1]
|
||||
|
||||
local_class_code = courses_info[2]
|
||||
local_class_title = courses_info[3]
|
||||
local_class_internal_url = courses_info[4]
|
||||
|
||||
if(local_class_code ):
|
||||
new_diction['external_code'] = local_class_code
|
||||
|
||||
if (local_class_title):
|
||||
new_diction['title'] = local_class_title
|
||||
|
||||
new_diction['distantiel'] = "1"
|
||||
new_diction['presentiel'] = "0"
|
||||
class_internal_url = ""
|
||||
|
||||
if (local_class_internal_url):
|
||||
new_diction['internal_url'] = local_class_internal_url
|
||||
else:
|
||||
local_status, class_internal_url = mycommon.CreateInternalUrl(local_class_title)
|
||||
if( local_status is False ):
|
||||
mycommon.myprint(str(inspect.stack()[0][3]) + " - impossible de generer le class_internal_url")
|
||||
return False, str(inspect.stack()[0][3]) + " - impossible de generer le class_internal_url",
|
||||
|
||||
new_diction['internal_url'] = class_internal_url
|
||||
|
||||
if ("token" in my_partner.keys()):
|
||||
if my_partner['token']:
|
||||
new_diction['token'] = my_partner['token']
|
||||
|
||||
if ("nom" in my_partner.keys()):
|
||||
if my_partner['nom']:
|
||||
new_diction['trainer'] = my_partner['nom']
|
||||
|
||||
|
||||
print(" ### new_diction = ", new_diction)
|
||||
|
||||
|
||||
"""
|
||||
Avant d'importer la formation, on va s'assurer que les données champs obligatoire sont renseignés
|
||||
"""
|
||||
field_list_obligatoire_formation = ['external_code', 'title', 'description', 'trainer', 'distantiel', 'presentiel',
|
||||
'token']
|
||||
for local_val_ftion in field_list_obligatoire_formation:
|
||||
if local_val_ftion not in new_diction.keys():
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) + " - impossible de créer la formation dans le moteur de recherche :" \
|
||||
" Le champs '"+local_val_ftion+"' n'existe pas.")
|
||||
return False, str(
|
||||
inspect.stack()[0][3]) + " - impossible de créer la formation dans le moteur de recherche :" \
|
||||
" Le champs '"+local_val_ftion+"' n'existe pas.",
|
||||
|
||||
|
||||
local_status, local_retval = class_mgt.add_class(new_diction)
|
||||
|
||||
if (local_status is False):
|
||||
return local_status, local_retval
|
||||
|
||||
"""
|
||||
Mettre à jour la table 'course' avec la valeur du 'full_internal_url
|
||||
"""
|
||||
if (not local_class_internal_url):
|
||||
my_query_local_class_internal_url = "UPDATE course SET full_internal_url = '" + str(class_internal_url) + "' WHERE id= '"+ str(lms_class_id)+"' "
|
||||
print(" ### my_query_local_class_internal_url = ", my_query_local_class_internal_url)
|
||||
|
||||
try:
|
||||
# cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria", "DB"))
|
||||
cur.execute(my_query_local_class_internal_url)
|
||||
except mariadb.Error as e:
|
||||
# print(f"Error: {e}")
|
||||
mycommon.myprint(" Impossible de mettre à jours la table cours avec le class_internal_url " + str({e}))
|
||||
return False, "Impossible de mettre à jour le class_internal_url" + str({e})
|
||||
|
||||
conn.commit()
|
||||
|
||||
conn.close()
|
||||
|
||||
return True, " La formation a bien été créée/mise à jour dans le moteur de recherche"
|
||||
|
||||
|
|
Loading…
Reference in New Issue