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

@ -199,18 +199,18 @@ def update_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.
'''
# 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', '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'
@ -817,11 +822,11 @@ def get_class(diction):
# Verification de la validité du token dans le cas des user en mode connecté
'''
/!\ Important : si le token est vide, alors c'est une recherche faite en mode non-connecté.
on doit l'accepter.
/!\ Important : si le token est vide, alors c'est une recherche faite en mode non-connecté.
on doit l'accepter.
le controle de la validé du token est faite que ce dernier n'est pas vide.
'''
le controle de la validé du token est faite que ce dernier n'est pas vide.
'''
user_recid = "None"
# Verification de la validité du token/mail dans le cas des user en mode connecté
@ -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)