16/10/22 - 15h00
parent
1019da4b1a
commit
1d4c2ffb99
|
@ -64,8 +64,8 @@ token_fr_pontuation = []
|
||||||
La taille maximal d'un champs à retourner.
|
La taille maximal d'un champs à retourner.
|
||||||
Au dela de 300 caractère, le système rame
|
Au dela de 300 caractère, le système rame
|
||||||
'''
|
'''
|
||||||
MAX_CARACT = 200
|
MAX_CARACT = 100
|
||||||
MAX_CARACT_DEDUIT = 50
|
MAX_CARACT_DEDUIT = 150
|
||||||
TOKEN_SIZE = 25
|
TOKEN_SIZE = 25
|
||||||
MAX_CARACT_DETAIL = 500
|
MAX_CARACT_DETAIL = 500
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import GlobalVariable as MYSY_GV
|
||||||
import user_message_mgt as umm
|
import user_message_mgt as umm
|
||||||
import Ela_Spacy as ES
|
import Ela_Spacy as ES
|
||||||
import GlobalVariable as MYSY_GV
|
import GlobalVariable as MYSY_GV
|
||||||
|
import re
|
||||||
|
|
||||||
class JSONEncoder(json.JSONEncoder):
|
class JSONEncoder(json.JSONEncoder):
|
||||||
def default(self, o):
|
def default(self, o):
|
||||||
|
@ -63,7 +63,7 @@ def get_all_articles_avis(diction):
|
||||||
for x in coll_name.find({'valide': '1', 'locked': '0'},
|
for x in coll_name.find({'valide': '1', 'locked': '0'},
|
||||||
{ "indexed": 0, "indexed_desc": 0, "indexed_obj": 0, "indexed_title": 0,
|
{ "indexed": 0, "indexed_desc": 0, "indexed_obj": 0, "indexed_title": 0,
|
||||||
"valide": 0, "locked": 0, }).sort(
|
"valide": 0, "locked": 0, }).sort(
|
||||||
[("title_formation",pymongo.ASCENDING), ("date_avis",pymongo.ASCENDING)]):
|
[ ("date_avis",pymongo.DESCENDING), ("title_formation",pymongo.ASCENDING),]):
|
||||||
# mycommon.myprint("AVANT ==> "+str(x['description']))
|
# mycommon.myprint("AVANT ==> "+str(x['description']))
|
||||||
val = x['qualite']
|
val = x['qualite']
|
||||||
if (len(x['qualite']) > MYSY_GV.MAX_CARACT):
|
if (len(x['qualite']) > MYSY_GV.MAX_CARACT):
|
||||||
|
@ -73,11 +73,18 @@ def get_all_articles_avis(diction):
|
||||||
x['qualite'] = val[:MYSY_GV.MAX_CARACT]
|
x['qualite'] = val[:MYSY_GV.MAX_CARACT]
|
||||||
|
|
||||||
val = x['avis']
|
val = x['avis']
|
||||||
if (len(x['avis']) > MYSY_GV.MAX_CARACT):
|
CLEANR = re.compile('<.*?>')
|
||||||
x['avis'] = val[:MYSY_GV.MAX_CARACT] + " ..."
|
|
||||||
|
clean_avis = re.sub(CLEANR, '', str(val))
|
||||||
|
clean_avis = str(clean_avis).replace(" ", " ");
|
||||||
|
|
||||||
|
#print(" ### CLEANRCLEANR = "+str(clean_avis))
|
||||||
|
|
||||||
|
if (len(clean_avis) > MYSY_GV.MAX_CARACT):
|
||||||
|
x['avis'] = clean_avis[:MYSY_GV.MAX_CARACT] + " ..."
|
||||||
|
|
||||||
else:
|
else:
|
||||||
x['avis'] = val[:MYSY_GV.MAX_CARACT]
|
x['avis'] = str(clean_avis)
|
||||||
|
|
||||||
# mycommon.myprint("APRES ==> " + str(x['description']))
|
# mycommon.myprint("APRES ==> " + str(x['description']))
|
||||||
|
|
||||||
|
@ -546,11 +553,15 @@ def recherche_articles_avis(diction):
|
||||||
x['qualite'] = val[:MYSY_GV.MAX_CARACT]
|
x['qualite'] = val[:MYSY_GV.MAX_CARACT]
|
||||||
|
|
||||||
val = x['avis']
|
val = x['avis']
|
||||||
if (len(x['avis']) > MYSY_GV.MAX_CARACT):
|
CLEANR = re.compile('<.*?>')
|
||||||
x['avis'] = val[:MYSY_GV.MAX_CARACT] + " ..."
|
clean_avis = re.sub(CLEANR, '', str(val))
|
||||||
|
|
||||||
|
#print(" ### CLEANRCLEANR = "+str(CLEANR))
|
||||||
|
if (len(clean_avis) > MYSY_GV.MAX_CARACT):
|
||||||
|
x['avis'] = clean_avis[:MYSY_GV.MAX_CARACT] + " ..."
|
||||||
|
|
||||||
else:
|
else:
|
||||||
x['avis'] = val[:MYSY_GV.MAX_CARACT]
|
x['avis'] = str(clean_avis)
|
||||||
|
|
||||||
print(user)
|
print(user)
|
||||||
insertObject.append(JSONEncoder().encode(user))
|
insertObject.append(JSONEncoder().encode(user))
|
||||||
|
|
|
@ -419,10 +419,14 @@ def add_class(diction):
|
||||||
if ret_val and ret_val['_id']:
|
if ret_val and ret_val['_id']:
|
||||||
#Indexation Title de la nouvelle formation ajoutée
|
#Indexation Title de la nouvelle formation ajoutée
|
||||||
training_to_index_title = {}
|
training_to_index_title = {}
|
||||||
training_to_index_title['internal_url'] =mydata['internal_url']
|
training_to_index_title['internal_url'] = mydata['internal_url']
|
||||||
training_to_index_title['reindex_all'] = '0'
|
training_to_index_title['reindex_all'] = '0'
|
||||||
eibdd.ela_index_given_classes_title(training_to_index_title)
|
eibdd.ela_index_given_classes_title(training_to_index_title)
|
||||||
|
|
||||||
|
# Indexation Title des mots clées
|
||||||
|
eibdd.ela_index_given_classes_keywords(training_to_index_title)
|
||||||
|
|
||||||
|
|
||||||
return True, "La formation a bien été ajoutée"
|
return True, "La formation a bien été ajoutée"
|
||||||
else:
|
else:
|
||||||
mycommon.myprint(" Impossible d'ajouter la formation "+str(str(mydata['external_code'])))
|
mycommon.myprint(" Impossible d'ajouter la formation "+str(str(mydata['external_code'])))
|
||||||
|
|
|
@ -269,12 +269,111 @@ def ela_index_all_classes_keywords():
|
||||||
mycommon.myprint(str(nb_class_indexed) + " ont été indexes")
|
mycommon.myprint(str(nb_class_indexed) + " ont été indexes")
|
||||||
return True, str(nb_class_indexed) + " ont été indexes "
|
return True, str(nb_class_indexed) + " ont été indexes "
|
||||||
|
|
||||||
return True
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
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))
|
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||||
return False, "Impossible d'indexer la BDD des formations ==> KO"
|
return False, "Impossible d'indexer la BDD des formations ==> KO"
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Cette fonction va indexer les mots clés d'une formation donnée ou toutes les formation d'un partenaire.
|
||||||
|
Pour ce faire elle prend en argument :
|
||||||
|
- internal_url
|
||||||
|
- partenaire_recid
|
||||||
|
|
||||||
|
/!\ Important : La fonction peut reindexer les formation si l'argument
|
||||||
|
reindexe = 1
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def ela_index_given_classes_keywords(diction) :
|
||||||
|
# Making a Connection with MongoClient
|
||||||
|
try:
|
||||||
|
# Dictionnaire des champs utilisables
|
||||||
|
field_list = ['internal_url', 'partner_owner_recid', 'reindex_all']
|
||||||
|
incom_keys = diction.keys()
|
||||||
|
|
||||||
|
'''
|
||||||
|
# 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.
|
||||||
|
'''
|
||||||
|
for val in incom_keys:
|
||||||
|
if str(val).lower() not in str(field_list).lower():
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " Le champ '" + val + "' n'existe pas, MAJ annulée")
|
||||||
|
return False, " Impossible de se connecter, merci de contacter le support technique"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
check = False
|
||||||
|
internal_url = ""
|
||||||
|
if ("internal_url" in diction.keys()):
|
||||||
|
if diction['internal_url']:
|
||||||
|
check = True
|
||||||
|
internal_url = diction['internal_url']
|
||||||
|
|
||||||
|
partner_owner_recid = ""
|
||||||
|
if ("partner_owner_recid" in diction.keys()):
|
||||||
|
if diction['partner_owner_recid']:
|
||||||
|
check = True
|
||||||
|
partner_owner_recid = diction['partner_owner_recid']
|
||||||
|
|
||||||
|
reindex_all = ""
|
||||||
|
if ("reindex_all" in diction.keys()):
|
||||||
|
if diction['reindex_all']:
|
||||||
|
check = True
|
||||||
|
reindex_all = diction['reindex_all']
|
||||||
|
|
||||||
|
if( check is False ):
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " - Aucune formation à indexer")
|
||||||
|
return True, " Aucune formation à indexer"
|
||||||
|
|
||||||
|
|
||||||
|
collection = MYSY_GV.dbname["myclass"]
|
||||||
|
|
||||||
|
|
||||||
|
nb_class_indexed = 0
|
||||||
|
myquery = {'valide':'1'}
|
||||||
|
if( internal_url and len(str(internal_url)) > 0 ):
|
||||||
|
myquery['internal_url'] = internal_url
|
||||||
|
|
||||||
|
if (partner_owner_recid and len(str(partner_owner_recid)) > 0):
|
||||||
|
myquery['partner_owner_recid'] = partner_owner_recid
|
||||||
|
|
||||||
|
if (reindex_all and len(str(reindex_all)) > 0):
|
||||||
|
if(reindex_all != "1" ):
|
||||||
|
myquery['indexed_keyword'] = "0"
|
||||||
|
|
||||||
|
print(" QUERY INDEX keyword ="+str(myquery))
|
||||||
|
|
||||||
|
for doc in collection.find(myquery):
|
||||||
|
if ("title" in doc.keys()):
|
||||||
|
chaine = doc["title"]
|
||||||
|
mycommon.myprint(" external_code = " + str(doc["external_code"]) + " ==> " + str(chaine))
|
||||||
|
retval = ela_index_class(str(doc["external_code"]), "keyword")
|
||||||
|
print(" apres : ela_index_given_classes_keywords retval = " + str(retval))
|
||||||
|
|
||||||
|
if (retval is False):
|
||||||
|
mycommon.myprint(
|
||||||
|
str(inspect.stack()[0][3]) + "IMPOSSIBLE d'indexer la formation = " + str(doc["external_code"]))
|
||||||
|
else:
|
||||||
|
nb_class_indexed = nb_class_indexed + 1
|
||||||
|
|
||||||
|
# retval = ls.ela_index_record_field(chaine, str(doc["external_code"]))
|
||||||
|
|
||||||
|
mycommon.myprint(str(nb_class_indexed) + " ont été indexes ==> keyword")
|
||||||
|
return True, str(nb_class_indexed) + " ont été indexes ==> keyword"
|
||||||
|
|
||||||
|
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 d'indexer la BDD des formations ==> KO"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
La fonction "ela_index_all_classes_title" va aller chercher chaque cours dans la BDD
|
La fonction "ela_index_all_classes_title" va aller chercher chaque cours dans la BDD
|
||||||
et créer les mots clées des title qui sont ensuite enregister dans la table "elaindex"
|
et créer les mots clées des title qui sont ensuite enregister dans la table "elaindex"
|
||||||
|
@ -384,24 +483,8 @@ def ela_index_given_classes_title(diction) :
|
||||||
|
|
||||||
|
|
||||||
collection = MYSY_GV.dbname["myclass"]
|
collection = MYSY_GV.dbname["myclass"]
|
||||||
'''
|
|
||||||
ATTENTION ATTENTION
|
|
||||||
/!\ : avant l'indexation, on vide la table des indexes.
|
|
||||||
cette logique est tres gourmande.
|
|
||||||
ce quil faudrait faire :
|
|
||||||
- si une formation est indexée, mettre un fag pour dire : indexé => OK
|
|
||||||
- si on met à jour une formation ==> Mettre le flag à KO
|
|
||||||
- si on ajoute une formation, mettre le flag à KO
|
|
||||||
|
|
||||||
|
|
||||||
ex : indexation du champ 'title' ou du champ 'objectif', je vais introduitre la notion de 'source_fied'
|
|
||||||
pour l'indexation title, 'source_fied' = 'title'
|
|
||||||
pour l'indexation objectif, 'source_fied' = 'objectif'
|
|
||||||
|
|
||||||
apres pour l'indexation, il ne faudra indexer que les formation dont le flag est KO.
|
|
||||||
aussi, avant d'indexer une formation, supprimer tous les index de la dite formation pour remplacer tous les anciens et eviter un doublon
|
|
||||||
'''
|
|
||||||
|
|
||||||
nb_class_indexed = 0
|
nb_class_indexed = 0
|
||||||
myquery = {'valide':'1'}
|
myquery = {'valide':'1'}
|
||||||
if( internal_url and len(str(internal_url)) > 0 ):
|
if( internal_url and len(str(internal_url)) > 0 ):
|
||||||
|
@ -431,8 +514,8 @@ def ela_index_given_classes_title(diction) :
|
||||||
|
|
||||||
# retval = ls.ela_index_record_field(chaine, str(doc["external_code"]))
|
# retval = ls.ela_index_record_field(chaine, str(doc["external_code"]))
|
||||||
|
|
||||||
mycommon.myprint(str(nb_class_indexed) + " ont été indexes")
|
mycommon.myprint(str(nb_class_indexed) + " ont été indexes => title")
|
||||||
return True, str(nb_class_indexed) + " ont été indexes "
|
return True, str(nb_class_indexed) + " ont été indexes => title "
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||||
|
|
18
main.py
18
main.py
|
@ -1603,7 +1603,7 @@ def recordClassImage():
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Cette API va indexer une formation donnée ou toutes les formation d'un partenaire.
|
Indexation du titre : Cette API va indexer une formation donnée ou toutes les formation d'un partenaire.
|
||||||
Pour ce faire elle prend en argument :
|
Pour ce faire elle prend en argument :
|
||||||
- internal_url
|
- internal_url
|
||||||
- partenaire_recid
|
- partenaire_recid
|
||||||
|
@ -1618,6 +1618,22 @@ def ela_index_given_classes_title():
|
||||||
return jsonify(status=status, message=retval)
|
return jsonify(status=status, message=retval)
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Indexation des mots clés : Cette API va indexer une formation donnée ou toutes les formation d'un partenaire.
|
||||||
|
Pour ce faire elle prend en argument :
|
||||||
|
- internal_url
|
||||||
|
- partenaire_recid
|
||||||
|
"""
|
||||||
|
@app.route('/myclass/api/ela_index_given_classes_keywords/', methods=['POST','GET'])
|
||||||
|
@crossdomain(origin='*')
|
||||||
|
def ela_index_given_classes_keywords():
|
||||||
|
# On recupere le corps (payload) de la requete
|
||||||
|
payload = request.form.to_dict()
|
||||||
|
print(" ### payload = ",payload)
|
||||||
|
status, retval = ela_index_class.ela_index_given_classes_keywords(payload)
|
||||||
|
return jsonify(status=status, message=retval)
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Stripe Payement : Creation d'un abonnement
|
Stripe Payement : Creation d'un abonnement
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue