# -*- 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 dateutil.relativedelta 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 insert_log(request, proc, msg): query = "INSERT t_log_nuit (proc,msg) VALUES (:proc,:msg);" execute_query(request, query, {'proc': proc, 'msg' :msg}) def truncate_log(request): query = "TRUNCATE t_log_nuit;" execute_query(request, query, {}) def get_log(request): # lire les rappels non envoyés query = "SELECT * FROM t_log_nuit;" results = request.dbsession.execute(query, {}).fetchall() return results def get_email_rappels(request): # lire les rappels non envoyés query = """ SELECT r.*, e.c_qualite, e.c_nom, e.c_adr, e.c_adr2, e.c_ville, e.c_email, s.tel, s.nom as nom_societe FROM email_rappels r INNER JOIN dem_devis e ON r.societe = e.societe AND r.nochantier = e.no_id INNER JOIN p_societe s ON r.societe = s.societe WHERE ISNULL(envoye_le) ORDER BY no_id;""" results = request.dbsession.execute(query, {}).fetchall() return results def delete_rdv(request, nodossier, nolig): societe = nodossier[0:2] no_id = nodossier[3:] query = "DELETE FROM dem_lig where societe = '%s' and no_id=%s and nolig=%s;" % (societe, no_id, nolig) execute_query(request, query, {}) def update_rappels(request): query = "CALL spUPD_RAPPELS();" execute_query(request, query, {}) def update_email_rappels(request, no_id): query = "UPDATE email_rappels SET envoye_le = NOW() WHERE no_id = :no_id;" execute_query(request, query, {'no_id': no_id}) def get_societes(request, societe): if societe == '0': query = "SELECT * FROM p_societe;" results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall() else: query = "SELECT * FROM p_societe WHERE societe = :societe;" results = request.dbsession.execute(query, {'societe': societe}).first() return results