From 8836da12a4aa088faa0139f391b522cc58317b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ch=C3=A9rifBALDE?= Date: Wed, 22 Jun 2022 09:36:37 +0200 Subject: [PATCH] 22/06/22 - 09h30 --- main.py | 14 ++++++++ user_message_mgt.py | 88 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 94 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index 8112ae3..25aa03c 100644 --- a/main.py +++ b/main.py @@ -817,6 +817,20 @@ def add_user_message(): status, retval = um.add_user_message(payload) return jsonify(status=status, message=retval) +''' +Cette API recuperer le message posté par un utilisateur. +Le premier cas d'usage est la recuperation post effectué sur un article par un +utilisateur +''' +@app.route('/myclass/api/get_user_message/', methods=['POST','GET']) +@crossdomain(origin='*') +def get_user_message(): + # On recupere le corps (payload) de la requete + payload = request.form.to_dict() + print(" ### payload = ",payload) + status, retval = um.get_user_message(payload) + return jsonify(status=status, message=retval) + ''' diff --git a/user_message_mgt.py b/user_message_mgt.py index 18fa307..bed858f 100644 --- a/user_message_mgt.py +++ b/user_message_mgt.py @@ -1,9 +1,13 @@ ''' Ce fichier traite tout ce qui est lié à la gestion des messages envoyé par un utilisateur. + +le type de message definit son objet et son traitement. par exemple : +- type = "mail" ==> c'est email à envoyer +- type = "phone" ==> c'est un sms à envoyer +- type = "comment_article" ==> c'est commentaire posté sur un articles par un user. ''' - - +import pymongo from pymongo import MongoClient import json from bson import ObjectId @@ -13,6 +17,9 @@ import prj_common as mycommon import secrets import inspect import sys, os +import GlobalVariable as MYSY_GV +from pymongo import MongoClient + class JSONEncoder(json.JSONEncoder): def default(self, o): @@ -20,10 +27,6 @@ class JSONEncoder(json.JSONEncoder): return str(o) return json.JSONEncoder.default(self, o) -CONNECTION_STRING = "mongodb://localhost/cherifdb" -client = MongoClient(CONNECTION_STRING) -dbname = client['cherifdb'] - ''' Ajout du message d'un utilisateur @@ -41,7 +44,7 @@ def add_user_message(diction): ''' field_list = ['type', 'sender_mail', 'sender_tel', 'recever_mail', 'recever_tel', 'object', 'message', 'token', 'user_ip', 'user_country_code', 'user_country_name', 'user_city','user_postal', - 'user_latitude', 'user_longitude', 'user_state', 'sender_name'] + 'user_latitude', 'user_longitude', 'user_state', 'sender_name', 'article_avis_url'] incom_keys = diction.keys() for val in incom_keys: if val not in field_list: @@ -156,11 +159,20 @@ def add_user_message(diction): new_diction['user_state'] = diction['user_state'] + if ("article_avis_url" in diction.keys()): + if diction['article_avis_url']: + new_diction['article_avis_url'] = diction['article_avis_url'] + + + new_diction['user_recid'] = user_recid new_diction['sent'] = '0' new_diction['valide'] = '1' + new_diction['date_update'] = str(datetime.now()) + new_diction['locked'] = "0" - coll_name = dbname['user_message'] + + coll_name = MYSY_GV.dbname['user_message'] ret_val = coll_name.insert_one(new_diction) if ret_val and ret_val.inserted_id: @@ -178,3 +190,63 @@ def add_user_message(diction): +''' +Recuperation d'un message asscié à un article. +C'est le cas de commentaires d'articles. + +''' +def get_user_message(diction): + try: + + # Dictionnaire des champs utilisables + field_list = ['type', 'article_avis_url'] + 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, requete annulée") + return False, " Impossible de recuperer le message" + + ''' + 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 = ['type', 'article_avis_url'] + 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 le message" + + mytype = "" + if ("type" in diction.keys()): + if diction['type']: + mytype = diction['type'] + + myurl = "" + if ("article_avis_url" in diction.keys()): + if diction['article_avis_url']: + myurl = diction['article_avis_url'] + + + coll_name = MYSY_GV.dbname['user_message'] + + + RetObject = [] + tmp_key = 1 + for retVal in coll_name.find({'type': str(mytype), 'article_avis_url': str(myurl), "valide":"1", "locked":"0"}, + {"sender_name": 1, "sender_mail":1, "message":1, "date_update":1, "_id":1}).\ + sort([("date_update",pymongo.DESCENDING)]): + mycommon.myprint(str(retVal)) + user = retVal + user['tmp_key'] = tmp_key + tmp_key = tmp_key + 1 + 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) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno)) + return False, "Impossible de recuperer le message" \ No newline at end of file