diff --git a/articles_avis.py b/articles_avis.py
index b5b104d..917fd31 100644
--- a/articles_avis.py
+++ b/articles_avis.py
@@ -192,7 +192,10 @@ def get_articles_avis(diction):
for x in coll_name.find({'valide': '1', 'locked': '0', 'title_formation':my_title_formation},
{"_id": 0, "indexed": 0, "indexed_desc": 0, "indexed_obj": 0, "indexed_title": 0,
- "valide": 0, "locked": 0, "url_formation": 0, }).sort([("title_formation",pymongo.ASCENDING), ("date_avis",pymongo.ASCENDING)]) :
+ "valide": 0, "locked": 0, "url_formation": 0, }).sort([("title_formation",pymongo.ASCENDING),
+ ("date_avis",pymongo.ASCENDING),
+ ("note", pymongo.DESCENDING),
+ ]) :
user = x
insertObject.append(JSONEncoder().encode(user))
@@ -225,7 +228,7 @@ def add_articles_avis(diction):
'''
field_list = ['token', 'title_formation', 'user_ip', 'user_country_code', 'user_country_name',
'user_city', 'user_postal', 'user_latitude', 'user_longitude', 'user_state',
- 'type_formation', 'qualite', 'avis', 'note',
+ 'type_formation', 'qualite', 'avis', 'note', 'qualityrating','avisrating',
'comment', 'postedby', 'url_formation', 'user_recid']
incom_keys = diction.keys()
for val in incom_keys:
@@ -349,6 +352,14 @@ def add_articles_avis(diction):
if diction['url_formation']:
mydata['url_formation'] = diction['url_formation']
+ if ("avisrating" in diction.keys()):
+ if diction['avisrating']:
+ mydata['avisrating'] = diction['avisrating']
+
+ if ("qualityrating" in diction.keys()):
+ if diction['qualityrating']:
+ mydata['qualityrating'] = diction['qualityrating']
+
mydata['valide'] = '0'
mydata['locked'] = '1'
mydata['indexed'] = '0'
@@ -663,7 +674,7 @@ def get_article_avis_alaune(diction):
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(
+ "valide": 0, "locked": 0, }).sort(
[("date_avis", pymongo.ASCENDING), ("title_formation", pymongo.ASCENDING)]):
val = x['qualite']
diff --git a/ela_user_account.py b/ela_user_account.py
index ea0fd1f..0eca9e4 100644
--- a/ela_user_account.py
+++ b/ela_user_account.py
@@ -982,23 +982,30 @@ def change_uer_email(diction):
+
'''
-Cette fonction supprime le compte de utilisateur.
-Pour garder la coherence du systeme, cela revient à :
-1 - Anonyser le compte tous les champ identifiants une personne
-(['adr_street', 'adr_city', 'adr_zip', 'adr_country', 'mob_phone','link_facebook', 'link_twitter', 'token'])
-2 - Bloquer le compte
-3 - Desactiver le compte
+Pour des questions de securité, la suppression d'un compte se fait en 2 etapes :
+
+etape 1 :
+Le frontoffice qui declenche l'envoie d'un email avec un token sur l'adresse mail
+du user. puis blocage du compte.
+
+etape 2 :
+Lorsque le user se connecte à son mail et clique sur le lien, là les données
+sont supprimées.
+
'''
-def delete_user_account(diction):
+def send_mail_delete_user(diction):
try:
# Dictionnaire des champs utilisables
- field_list = ['token']
+ 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(" Le champ '" + val + "' n'existe pas, requete annulée")
- return False, " Impossible de recuperer le user account"
+ mycommon.myprint(str(inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
+ return False, " Impossible de supprimer le compte utilisateur"
'''
Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente,
@@ -1007,57 +1014,200 @@ def delete_user_account(diction):
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, " Impossible de recuperer le user account"
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
+ return False, " Impossible de supprimer le compte utilisateur"
- # recuperation des paramettre
- token_value = ""
- user_recid = ""
- mydata = {}
+ # recuperation des paramettre
+ token_value = ""
+ user_recid = ""
+ mydata = {}
- if diction['token']:
- token_value = diction['token']
+ if diction['token']:
+ token_value = diction['token']
+
+ # Verification de la validité du token/mail dans le cas des user en mode connecté
+ if (len(str(token_value)) <= 0):
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Le token est vide ")
+ return False, " Impossible de supprimer le compte utilisateur"
+
+ retval = mycommon.check_token_validity("", token_value)
- # Verification de la validité du token/mail dans le cas des user en mode connecté
- if (len(str(token_value)) <= 0):
- mycommon.myprint("Le token est vide")
- return False, "Le token est vide"
+ if retval is False:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Le token n'est pas valide ")
+ return False, "Le token n'est pas valide"
- retval = mycommon.check_token_validity("", token_value)
+ # Recuperation du recid du user
+ user_recid = mycommon.get_user_recid_from_token(token_value)
+ if user_recid is False:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Impossible de recuperer le recid du user ")
+ return False, " Impossible de supprimer le compte utilisateur"
- if retval is False:
- mycommon.myprint("Le token n'est pas valide")
- return False, "Le token n'est pas valide"
+ # Recuperation du mail du user
+ user_email_from_token = mycommon.get_user_email_from_token(token_value)
+ if user_email_from_token is False:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Impossible de recuperer l'adresse mail du user ")
+ return False, " Impossible de supprimer le compte utilisateur"
- # Recuperation du recid du user
- user_recid = mycommon.get_user_recid_from_token(token_value)
- if user_recid is False:
- mycommon.myprint(" Impossible de recuperer le recid du user")
- return False, " Impossible de mettre à jour le mot de passe"
+ # Blocage du compte.
+ mydata = {}
+ mydata['delete_process'] = "1"
+ mydata['locked'] = "1"
+ mydata['active'] = "0"
+ if ("user_ip" in diction.keys()):
+ if diction['user_ip']:
+ mydata['delete_ip_1'] = diction['user_ip']
- mydata['date_update'] = str(datetime.now())
- mydata['pwd'] = user_recid
- mydata['email'] = "Anonyme"
- mydata['active'] = '0'
- mydata['locked'] = '1'
- mydata['adr_street'] = "Anonyme_"+user_recid[:5]
- mydata['mob_phone'] = '0000000'
- mydata['link_facebook'] = 'Anonyme_facebook'
- mydata['link_twitter'] = 'Anonyme_twitter'
+ mydata['date_update'] = str(datetime.now())
- coll_name = dbname['user_account']
- ret_val = coll_name.find_one_and_update({'recid': str(user_recid), 'locked': '0'},
- {"$set": mydata},
- return_document=ReturnDocument.AFTER
- )
+ coll_name = dbname['user_account']
+ ret_val = coll_name.find_one_and_update({'recid': str(user_recid), 'locked': '0'},
+ {"$set": mydata},
+ return_document=ReturnDocument.AFTER
+ )
- if (ret_val and ret_val['_id']):
- mycommon.myprint("Le compte utilisateur =" + str(ret_val['_id'])+" a été supprimé")
- return True, " Le compte utilisateur a bien été supprimé"
- else:
- mycommon.myprint(" Impossible de supprimer le compte utilisateur")
- return False, "Impossible de supprimer le compte utilisateur"
+ if (ret_val and ret_val['_id']):
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Le compte utilisateur =" + str(
+ ret_val['_id']) + " email de suppression envoyé ")
+
+ else:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Impossible de supprimer le compte utilisateur - table : user_account")
+ return False, "Impossible de supprimer le compte utilisateur"
+
+
+ # Envoie de l'email de notification
+ email_mgt.send_user_delete_account(user_recid, user_email_from_token)
+
+ return True, "Un email vous été envoyé. connectez vous à votre adresse mail finaliser la suppression du compte."
+
+ 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 supprimer le compte utilisateur"
+
+
+
+'''
+Cette fonction supprime le compte de utilisateur.
+Pour garder la coherence du systeme, cela revient à :
+1 - Anonyser le compte tous les champs identifiants une personne
+(['adr_street', 'adr_city', 'adr_zip', 'adr_country', 'mob_phone','link_facebook', 'link_twitter', 'token'])
+2 - Bloquer le compte
+3 - Desactiver le compte
+4 - Anomyser les tables annexe :
+ a) articles_avis
+ b) user_token
+'''
+def delete_user_account(diction):
+ try:
+ # Dictionnaire des champs utilisables
+ field_list = ['user_recid', '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'est pas autorisé")
+ return False, " Impossible de supprimer le compte utilisateur"
+
+ '''
+ 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 = ['user_recid']
+ 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 supprimer le compte utilisateur"
+
+ # recuperation des paramettre
+ token_value = ""
+ user_recid = ""
+ mydata = {}
+
+ if diction['user_recid']:
+ user_recid = diction['user_recid']
+
+
+ # Verification de la validité du token/mail dans le cas des user en mode connecté
+ if (len(str(user_recid)) <= 0):
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Le recid est vide ")
+ return False, " Impossible de supprimer le compte utilisateur"
+
+
+ # Recuperation du mail du user
+ print(" user recid ~~~~~~~~ "+user_recid)
+ user_email_from_recid = mycommon.get_user_email_from_recid(user_recid)
+ if user_email_from_recid is False:
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Impossible de recuperer l'adresse mail du user ")
+ return False, " Impossible de supprimer le compte utilisateur"
+
+
+ mydata['date_update'] = str(datetime.now())
+ mydata['pwd'] = user_recid
+ mydata['email'] = "Anonyme@"+user_recid[:5]
+ mydata['last_name'] = "name_"+user_recid[:5]
+ mydata['surname'] = "surname"+user_recid[:5]
+ mydata['active'] = '0'
+ mydata['locked'] = '1'
+ mydata['adr_street'] = "Anonyme_"+user_recid[:5]
+ mydata['mob_phone'] = '0000000'
+ mydata['link_facebook'] = 'Anonyme_facebook'
+ mydata['link_twitter'] = 'Anonyme_twitter'
+ mydata['link_linkedin'] = 'Anonyme_linkedin'
+ mydata['delete_process'] = "2"
+ if ("user_ip" in diction.keys()):
+ if diction['user_ip']:
+ mydata['delete_ip_1'] = diction['user_ip']
+
+
+ coll_name = dbname['user_account']
+ ret_val = coll_name.find_one_and_update({'recid': str(user_recid), 'locked': '0'},
+ {"$set": mydata},
+ return_document=ReturnDocument.AFTER
+ )
+
+ if (ret_val and ret_val['_id']):
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Le compte utilisateur =" + str(ret_val['_id'])+" a été supprimé de la table : user_account ")
+
+ else:
+ mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de supprimer le compte utilisateur - table : user_account")
+ return False, "Impossible de supprimer le compte utilisateur"
+
+ # Anonymisation de la table user_token ou se trouve aussi l'adresse email.
+ # table : user_token
+ user_token_coll_name = dbname['user_token']
+ ret_val = user_token_coll_name.update_many({'recid': str(user_recid), },
+ {"$set": {'email':'Anonyme',
+ 'valide':'0',
+ 'date_update':str(datetime.now()) } },
+ )
+ mycommon.myprint(str(inspect.stack()[0][3]) + " - Table : user_token : "+str(ret_val.matched_count)+" ont été trouvées "
+ " "+str(ret_val.acknowledged)+" ont été modifiées")
+
+ # table : articles_avis
+ articles_avis_coll_name = dbname['articles_avis']
+ ret_val = articles_avis_coll_name.update_many({'postedby': str(user_email_from_recid), },
+ {"$set": {'email': 'Anonyme',
+ 'date_update':str(datetime.now()) }},
+ )
+ mycommon.myprint(
+ str(inspect.stack()[0][3]) + " - Table : user_token : " + str(ret_val.matched_count) + " ont été trouvées "
+ " "+str(ret_val.acknowledged) + " ont été modifiées")
+
+
+ return True, "Le compte utilisateur a bien ete supprimé"
except Exception as e:
diff --git a/email_mgt.py b/email_mgt.py
index f470db3..e19b18d 100644
--- a/email_mgt.py
+++ b/email_mgt.py
@@ -197,8 +197,6 @@ def send_partner_account_mail(message, account_mail):
'''
Envoie de l'email de reinitialisation du mot de passe du user
'''
-
-
def send_user_init_pwd_mail(token, account_mail):
try:
tomorrow = datetime.date.today() + datetime.timedelta(days=1)
@@ -234,12 +232,12 @@ def send_user_init_pwd_mail(token, account_mail):
Cordialement
+ L'equipe informatique de MySy
+