# -*- 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 def execute_query(request, query, params): """Execute query and mark session as changed""" request.dbsession.execute(query, params) mark_changed(request.dbsession) transaction.commit() 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 base64 import uuid # get a UUID - URL safe, Base64 r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes) r_uuid = r_uuid.replace('=', '') query = "UPDATE members SET mdp_oublie=:r_uuid, mdp_oublie_date=now() WHERE email=:login;" execute_query(request, query, {'r_uuid':r_uuid, 'login':login}) return r_uuid 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 param == 'access': ' ne prend que le 1er caractère' new_values['access'] = new_values['access'][0] if s: s += ",%s=:%s" % (param, param) else: s = "%s=:%s" % (param, param) if email == '': 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})