From 64822da5259652de4bccfbe9c802af2c3a119361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ch=C3=A9rifBALDE?= Date: Mon, 18 Apr 2022 16:52:25 +0200 Subject: [PATCH] 17/04/22 - 16h30 --- articles_avis.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 13 +++++++++ 2 files changed, 82 insertions(+) diff --git a/articles_avis.py b/articles_avis.py index 897327e..b5b104d 100644 --- a/articles_avis.py +++ b/articles_avis.py @@ -42,6 +42,7 @@ La taille maximal d'un champs à retourner. Au dela de 300 caractère, le système rame ''' MAX_CARACT = 300 +MAX_CARACT_DEDUIT = 50 @@ -622,3 +623,71 @@ def store_recherche_article_avis(diction, user_recid=""): +'''' +Cette fonction retourne la liste +des articles/avis à la une''' +def get_article_avis_alaune(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 = ['token', 'user_ip', 'user_country_code', 'user_country_name', 'user_city', + 'user_postal', 'user_latitude', 'user_longitude', 'user_state'] + + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list: + mycommon.myprint( + str(inspect.stack()[0][3]) + " Le champ '" + val + "' n'existe pas, recherche annulée") + return False, " Le champ '" + val + "' n'existe pas, recherche annulée" + + ''' + 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(" : La valeur '" + val + "' n'est pas presente dans liste ") + return False, " : La valeur '" + val + "' n'est pas presente dans liste ", + + + coll_name = dbname['articles_avis'] + insertObject = [] + + for x in coll_name.find({'valide': '1', 'locked': '0', 'isalaune': '1'}, + {"_id": 0, "indexed": 0, "indexed_desc": 0, "indexed_obj": 0, "isalaune": 0, + "valide": 0, "locked": 0, "url_formation": 0, }).sort( + [("date_avis", pymongo.ASCENDING), ("title_formation", pymongo.ASCENDING)]): + + val = x['qualite'] + if (len(x['qualite']) > MAX_CARACT_DEDUIT): + x['qualite'] = val[:MAX_CARACT_DEDUIT] + " ..." + + else: + x['qualite'] = val[:MAX_CARACT_DEDUIT] + + val = x['avis'] + if (len(x['avis']) > MAX_CARACT_DEDUIT): + x['avis'] = val[:MAX_CARACT_DEDUIT] + " ..." + + else: + x['avis'] = val[:MAX_CARACT_DEDUIT] + + user = x + insertObject.append(JSONEncoder().encode(user)) + + print(" getObject = ", str(insertObject)) + return True, insertObject + + + 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 les articles à la Une" \ No newline at end of file diff --git a/main.py b/main.py index fffecef..ecb4183 100644 --- a/main.py +++ b/main.py @@ -905,6 +905,19 @@ def recherche_articles_avis(): return jsonify(status=status, message=result) +''' +Cette API retourne les articles et avis à la Une''' +@app.route('/myclass/api/get_article_avis_alaune/', methods=['GET','POST']) +@crossdomain(origin='*') +def get_article_avis_alaune(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### payload = ", payload) + status, result = aa.get_article_avis_alaune(payload) + return jsonify(status=status, message=result) + + + if __name__ == '__main__': print(" debut api")