# -*- 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_users_agenda(request): """ lire la liste des users ayant un agenda""" query = "SELECT * FROM p_users WHERE cd_uti != 'N' and agenda != 0 AND actif != 0 ORDER BY nom;" results = request.dbsession.execute(query).fetchall() return results def get_rendez_vous(request, itc): d = datetime.now() d = d - dateutil.relativedelta.relativedelta(months=3) # début du mois M-2 datedeb = d.strftime('%Y-%m-01') # lire les rdv de l'ITC query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.nolig, l.rdv_debut, l.rdv_fin, e.c_nom, e.c_ville FROM dem_lig l INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi """ results = request.dbsession.execute(query, {'datedeb': datedeb, 'itc': itc}).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_rdv(request, nodossier, nolig, new_values): societe = nodossier[0:2] no_id = nodossier[3:] # formater date et heure de visite if new_values['rdv_debut']: ddate = datetime.strptime(new_values['rdv_debut'], '%d-%m-%Y %H:%M') new_values['DATEVI'] = ddate.strftime("%Y-%m-%d") new_values['HEUREVI'] = ddate.strftime("%H:%M") del new_values['rdv_debut'] s = '' for param in new_values.keys(): if s: s += ",%s=:%s" % (param, param) else: s = "%s=:%s" % (param, param) new_values['societe'] = societe new_values['no_id'] = no_id new_values['nolig'] = nolig query = "UPDATE dem_lig SET %s WHERE societe = :societe AND NO_ID = :no_id AND NOLIG = :nolig ;" % s execute_query(request, query, new_values)