# -*- 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, user): if user == '': """ lire la liste des users ayant un agenda""" query = "SELECT * FROM p_users WHERE cd_uti != 'N' and cd_uti = agenda AND actif != 0 ORDER BY nom;" results = request.dbsession.execute(query).fetchall() else: """ lire le user ayant un agenda""" query = "SELECT * FROM p_users WHERE cd_uti = :user;" results = request.dbsession.execute(query, {'user': user}).first() return results def get_types_rdv(request): """ lire la liste des types de rendez-vous""" query = "SELECT * FROM p_types_rdv ORDER BY LIB;" 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_qualite, e.c_nom, e.c_ville, e.c_cp 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) def create_rdv(request, nodossier, dateRDV, heureRDV, type_rdv, agenda, logged_in): societe = nodossier[0:2] no_id = nodossier[3:] query = """ INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, DATEVI, HEUREVI, LISTE, USERMAJ) VALUES (:societe, :no_id, CURRENT_DATE, :type_rdv, :dateRDV, :heureRDV, :agenda, :logged_in) ;""" execute_query(request, query, {'societe': societe, 'no_id' :no_id, 'dateRDV': dateRDV, 'heureRDV': heureRDV, 'type_rdv': type_rdv, 'agenda': agenda, 'logged_in':logged_in})