update 21/02/2022 - 16h00

master
cbalde 2022-02-21 16:34:41 +01:00 committed by cherif
parent 8e9f8e4e7e
commit 72529bc82b
3 changed files with 18230 additions and 11 deletions

File diff suppressed because it is too large Load Diff

View File

@ -205,12 +205,12 @@ def update_class(diction):
# field_list.
'''
field_list = ['external_code', 'title', 'description', 'trainer', 'institut_formation', 'distantiel',
'presentiel','price', 'url', 'duree_formation', 'token','plus_produit', 'mots_cle']
'presentiel','price', 'url', 'duree_formation', 'token','plus_produit', 'mots_cle', 'domaine']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint(
str(inspect.stack()[0][3])+" - Creation partner account : Le champ '" + val + "' n'existe pas, Creation formation annulée")
str(inspect.stack()[0][3])+" - Creation partner account : Le champ '" + val + "' n'est pas accepté, Creation formation annulée")
return False, " Impossible de mettre à jour la formation"
'''
@ -310,6 +310,11 @@ def update_class(diction):
if diction['mots_cle']:
mydata['mots_cle'] = diction['mots_cle']
if ("domaine" in diction.keys()):
if diction['domaine']:
mydata['domaine'] = diction['domaine']
mydata['date_update'] = str(datetime.now())
mydata['indexed'] = '0'
@ -848,6 +853,133 @@ def get_class(diction):
filt_title = {'title': {'$regex': str(diction['title'])}}
print(" ATTTTENNTION : GESTION DU CAS OU LA PERSONNE QUI CHERCHE LE COURS EST UN UTILISATEUR : PB avec : partner_owner_recid ")
print(" #### avant requete get partner_owner_recid ="+str(user_recid)+
" filt_external_code = "+str(filt_external_code)+
" filt_title = "+str(filt_title))
for retVal in coll_name.find(({"$and": [ {'valide':'1'},{'locked':'0'},
filt_external_code, filt_title ]})):
mycommon.myprint(str(retVal))
user = retVal
RetObject.append(JSONEncoder().encode(user))
return True, RetObject
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 recuperer la formation"
'''
cette fonction recherche et retour une formation dont le proprietaire est le partenaire "partenaire_rec_id"
la clé est : l'external code.
- le token du partenaire. le token permet d'aller chercher le "rec_id"
Seules les formation "locked = 0 et valide = 1" sont recuperables par l'API
'''
def get_partner_class(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 = ['external_code', 'token', 'title', 'valide', 'locked']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint( str(inspect.stack()[0][3])+ " - Creation partner account : Le champ '" + val + "' n'existe pas, Creation formation annulée")
return False, " Impossible de recuperer la formation"
'''
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, " Impossible de recuperer la formation"
# recuperation des paramettre
mydata = {}
my_external_code = ""
my_token = ""
if ("external_code" in diction.keys()):
if diction['external_code']:
my_external_code = diction['external_code']
if ("token" in diction.keys()):
if diction['token']:
my_token = diction['token']
'''
Gestion des filters.
'''
external_code_crit = {}
if ("external_code" in diction.keys()):
if diction['external_code']:
external_code_crit['external_code'] = diction['external_code']
title_crit = {}
if ("title" in diction.keys()):
if diction['title']:
title_crit['title'] = diction['title']
coll_name = dbname['myclass']
# verifier que le token et l'email sont ok
coll_token = dbname['user_token']
# Verification de la validité du token dans le cas des user en mode connecté
'''
/!\ Important : le token ne doit jamais etre vide car cette fonction a pour objectif
de retourner les formation edité par un partenaire.
Il dont obligatoirement est en mode connecté
'''
user_recid = "None"
# Verification de la validité du token/mail dans le cas des user en mode connecté
if (len(str(my_token)) > 0):
retval = mycommon.check_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 recuperer la formation"
# Recuperation du recid de l'utilisateur
user_recid = mycommon.get_user_recid_from_token(my_token)
if user_recid is False:
mycommon.myprint(str(inspect.stack()[0][3])+" - Impossible de recuperer le token de l'utilisateur")
return False, " Impossible de recuperer la formation"
if (len(str(my_token)) <= 0):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Le token est vide")
return False, " Impossible de recuperer la formation"
RetObject = []
filt_external_code = {}
if ("external_code" in diction.keys()):
filt_external_code = {'external_code':{'$regex':str(diction['external_code'])}}
filt_title = {}
if ("title" in diction.keys()):
filt_title = {'title': {'$regex': str(diction['title'])}}
print(" ATTTTENNTION : GESTION DU CAS OU LA PERSONNE QUI CHERCHE LE COURS EST UN UTILISATEUR : PB avec : partner_owner_recid ")
print(" #### avant requete get partner_owner_recid ="+str(user_recid)+
" filt_external_code = "+str(filt_external_code)+
@ -869,6 +1001,9 @@ def get_class(diction):
def get_class_global_search(search_string):
try:
mycommon.myprint(" search_string", search_string)

17
main.py
View File

@ -243,6 +243,22 @@ def get_class():
return jsonify(status=status, message=retval)
'''
Cette api recupete la formation d'un partenaire donnée
elle est appelée exclusivement en mode connecté
- le token du partenaire
'''
@app.route('/myclass/api/get_partner_class/', methods=['POST','GET'])
@crossdomain(origin='*')
def get_partner_class():
# On recupere le corps (payload) de la requete
payload = request.form.to_dict()
print(" ### payload = ",str(payload)+" IP requester = "+str(request.remote_addr))
status, retval = cm.get_partner_class(payload)
return jsonify(status=status, message=retval)
@app.route('/myclass/api/update_class/', methods=['POST'])
@ -250,6 +266,7 @@ def get_class():
def update_class():
# On recupere le corps (payload) de la requete
payload = request.form.to_dict()
payload = request.form.to_dict()
print(" ### payload = ",payload)
status, retval = cm.update_class(payload)
return jsonify(status=status, message=retval)