22/06/22 - 09h30

master
ChérifBALDE 2022-06-22 09:36:37 +02:00 committed by cherif
parent d385ef8601
commit 8836da12a4
2 changed files with 94 additions and 8 deletions

14
main.py
View File

@ -817,6 +817,20 @@ def add_user_message():
status, retval = um.add_user_message(payload) status, retval = um.add_user_message(payload)
return jsonify(status=status, message=retval) 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)
''' '''

View File

@ -1,9 +1,13 @@
''' '''
Ce fichier traite tout ce qui est lié à la gestion des Ce fichier traite tout ce qui est lié à la gestion des
messages envoyé par un utilisateur. 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 from pymongo import MongoClient
import json import json
from bson import ObjectId from bson import ObjectId
@ -13,6 +17,9 @@ import prj_common as mycommon
import secrets import secrets
import inspect import inspect
import sys, os import sys, os
import GlobalVariable as MYSY_GV
from pymongo import MongoClient
class JSONEncoder(json.JSONEncoder): class JSONEncoder(json.JSONEncoder):
def default(self, o): def default(self, o):
@ -20,10 +27,6 @@ class JSONEncoder(json.JSONEncoder):
return str(o) return str(o)
return json.JSONEncoder.default(self, 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 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', 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', '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() incom_keys = diction.keys()
for val in incom_keys: for val in incom_keys:
if val not in field_list: if val not in field_list:
@ -156,11 +159,20 @@ def add_user_message(diction):
new_diction['user_state'] = diction['user_state'] 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['user_recid'] = user_recid
new_diction['sent'] = '0' new_diction['sent'] = '0'
new_diction['valide'] = '1' 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) ret_val = coll_name.insert_one(new_diction)
if ret_val and ret_val.inserted_id: 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"