# -*- coding: utf8 -*- from sqlalchemy import text from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import ( scoped_session, sessionmaker, ) from zope.sqlalchemy import ( ZopeTransactionExtension, mark_changed ) from datetime import * import transaction from .default import ( execute_query, ) def get_member_by_mdp_oublie(request, lien): query = "SELECT * FROM members WHERE mdp_oublie=:lien;" results = request.dbsession.execute(query, {'lien':lien}).first() return results def get_member_by_email(request, email): if email == '0': query = "SELECT * FROM members ORDER BY nom" results = request.dbsession.execute(query).fetchall() else: # lire le membres par son identifianr query = """SELECT * FROM members WHERE email=:email;""" results = request.dbsession.execute(query, {'email': email}).first() return results def update_membre_mdp_oublie(request, login): import uuid, base64 # get a UUID - URL safe, Base64 uid = uuid.uuid1() urlslug = base64.urlsafe_b64encode(uid.bytes).decode("utf-8").rstrip('=\n').replace('/', '_') query = "UPDATE members SET mdp_oublie=:urlslug, mdp_oublie_date=now() WHERE email=:login;" execute_query(request, query, {'urlslug':urlslug, 'login':login}) return urlslug def update_membre_mdp(request, login, password): """Update password for member login""" query = "UPDATE members SET mdp = SHA1(:password), mdp_oublie=NULL, mdp_oublie_date=NULL WHERE email=:login;" execute_query(request, query, {'login': login, 'password': password}) def update_last_connection(request, login): """Update last connection for login """ query = "UPDATE members SET dern_cnx_le=NOW() WHERE email=:login;" execute_query(request, query, {'login': login}) def update_membre(request, email, new_values): # formater les champs s = '' for param in new_values.keys(): if param == 'nom': new_values['nom'] = new_values['nom'].upper() if s: s += ",%s=:%s" % (param, param) else: s = "%s=:%s" % (param, param) if email == 'new': query = "INSERT INTO members SET %s" % s else: new_values['email'] = email query = "UPDATE members SET %s WHERE email = :email;" % s execute_query(request, query, new_values) def delete_membre(request, email): query = "DELETE FROM members WHERE email = :email ;" execute_query(request, query, {'email': email}) def update_membre_statut(request, email, action): if action == 'on': query = "UPDATE members SET expire_le = NULL WHERE email = :email ;" else: query = "UPDATE members SET expire_le = now() WHERE email = :email ;" execute_query(request, query, {'email': email})