# -*- 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 get_log_nuit(request, ): # lire le log de nuit query = """SELECT * FROM t_log_nuit;""" results = request.dbsession.execute(query, ) return results.fetchall() def get_last_emailing(request): """Lire les 200 derniers envois d'emails""" query = "SELECT * FROM email_rappels ORDER BY no_id DESC LIMIT 400;" results = request.dbsession.execute(query, {}) return results.fetchall() def get_orphans_DE(request, societe): query = "SELECT * FROM devis WHERE societe = '%s' AND nochantier = 0 ORDER BY date desc LIMIT 50 ;" % (societe) results = request.dbsession.execute(query).first() return results def get_dossiers_byChantier(request, societe, name): query = "CALL spGET_DOSSIERS_byChantier('%s','%s','%s');" % (societe, 'DE', name.replace("'","''")) results = request.dbsession.execute(query).fetchall() return results def get_rdf_causes_by_id(request, code): # lire les rdf_causes if code == '0': query = """SELECT * FROM rdf_causes;""" results = request.dbsession.execute(query).fetchall() else: query = """SELECT * FROM rdf_causes WHERE code=:code;""" results = request.dbsession.execute(query, {'code': code}).first() return results def get_emails_sent(request, nolig): d = datetime.now() d = d - dateutil.relativedelta.relativedelta(months=3) # début du mois M-3 datedeb = d.strftime('%Y-%m-01') if nolig == 0: query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.datemaj, l.comment, l.nolig, l.usermaj, e.nomcli FROM dem_lig l INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id WHERE l.date >= :datedeb AND l.comment LIKE 'Envoi email -> %' ORDER BY l.datemaj""" results = request.dbsession.execute(query, {'datedeb': datedeb}).fetchall() else: query = """SELECT * FROM dem_lig WHERE nolig=:nolig;""" results = request.dbsession.execute(query, {'nolig': nolig}).first() return results def delete_rdf_cause(request, old_code): query = "DELETE FROM rdf_causes WHERE code = :old_code;" execute_query(request, query, {'old_code': old_code}) def update_rdf_cause(request, old_code, code, libelle): if old_code == '0': query = "INSERT rdf_causes (code, libelle) values (:code, :libelle);" else: query = "UPDATE rdf_causes SET code = :code, libelle = :libelle WHERE code = :old_code;" execute_query(request, query, {'old_code': old_code, 'code': code, 'libelle': libelle})