Files
dumas_gestion/mondumas/models/agenda.py

94 lines
3.4 KiB
Python

# -*- 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})