# -*- coding: utf8 -*- from pyramid.response import Response from pyramid.renderers import render, get_renderer from pyramid.view import ( view_config, forbidden_view_config, ) from pyramid.httpexceptions import ( HTTPFound, HTTPNotFound, HTTPForbidden, ) from pyramid_mailer.message import Message, Attachment from datetime import * import hashlib from sqlalchemy.exc import DBAPIError import json from ..models.default import * from ..models.agenda import * from ..models.dossier import * @view_config(route_name='rdv_edit', renderer='../templates/agenda/rdv_edit.pt', permission='view') def rdv_edit(request): logged_in = request.authenticated_userid.upper() nodossier = request.matchdict['nodossier'] nolig = request.matchdict['nolig'] url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig) message = '' # lire la liste des users avec agenda agendas = get_users_agenda(request, '') # liste des types de rdv types_rdv = get_types_rdv(request) # creation d'un rdv ? if nolig == '0': # nouveau rdv = {} rdv['C_QUALITE'] = '' rdv['C_NOM'] = '' rdv['rdv_debut'] = datetime.today() rdv['COMMENT'] = 'RDV DEVIS' rdv['LISTE'] = logged_in rdv['DATEMAJ'] = date.today() rdv['USERMAJ'] = logged_in page_title = "Nouveau rendez-vous" else: # lire le rendez-vous rdv = get_dossier_rdv_by_no(request, nodossier, nolig) if not rdv: request.session.flash(u"Rendez-vous non trouvé : %s" % nodossier, 'warning') return HTTPFound(location=request.route_url('agenda', date='today')) page_title= "Modification du rdv du %s" % (rdv.rdv_debut.strftime('%d-%m-%Y %H:%M')) if 'form.submitted' in request.params: new_values = {} for param, db_value in rdv.items(): if param in request.params and request.params[param] != db_value: new_values[param] = request.params[param] if new_values: new_values['USERMAJ'] = logged_in.upper() ddate = datetime.strptime(new_values['rdv_debut'], '%d-%m-%Y %H:%M') import pdb;pdb.set_trace() update_rdv(request, nodossier, nolig, new_values) request.session.flash(u"Le rendez-vous a été mis à jour avec succès.", 'success') return HTTPFound(location=request.route_url('agenda', date=ddate.strftime('%Y-%m-%d'))) if 'form.deleted' in request.params: delete_rdv(request, nodossier, nolig) request.session.flash(u"Le rendez-vous a été supprimé avec succès.", 'success') return HTTPFound(location=request.route_url('agenda', date=rdv.rdv_debut.strftime('%Y-%m-%d'))) return { 'page_title': page_title, 'url': url, 'logged_in': logged_in, 'nodossier': nodossier, 'nolig': nolig, 'types_rdv': types_rdv, 'agendas': agendas, 'rdv': rdv, 'message': message, } @view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt', permission='view') def agenda(request): message = '' # récupérer les paramètres de l'appel de la view datePlan = request.matchdict['date'] logged_in = request.authenticated_userid.upper() if datePlan == 'today': datePlan = date.today().strftime('%Y-%m-%d') url = request.route_url('agenda', date=datePlan) url_select = request.route_url('dossier_select', date=datePlan) # liste des types de rdv types_rdv = get_types_rdv(request) type_rdv = 'RDV DEVIS' # liste des users avec agenda agendas = get_users_agenda(request, '') # le user est-il un commercial ? member = get_member_by_id(request, logged_in) if member.access == 0: isCommercial = True else: isCommercial = False agenda = member.agenda # prendre en compte les paramètres de saisie if 'agenda' in request.params: agenda = request.params["agenda"] # -- CREER un rendez-vous if 'form.submitted' in request.params: dateRDV = request.params['dateRDV'] heureRDV = request.params['heureRDV'] type_rdv = request.params['type_rdv'] societe = request.params['societe'] name = request.params['name'].split(' | ') create_rdv(request, name[1], dateRDV, heureRDV, type_rdv, agenda, logged_in.upper()) request.session.flash(u"Le rendez-vous a été CREE avec succès.", 'success') # position le planning à le date de crétaion du RDV datePlan = dateRDV rows = get_rendez_vous(request, agenda) # construire la liste des events events = [] for row in rows: # déterminer la couleur de l'event selon la societe societe = row.nodossier[0:2] if societe == "PE": color = "#ffffb3" elif societe == "ME": color = "#ffe44d" elif societe == "PL": color = "#b3ff66" elif societe == "PO": color = "#b1dae7" else: color = "#ffb3cc" json_event = { 'title': '%s %s' % (row.c_qualite, row.c_nom), 'description': '%s %s' % (row.c_cp, row.c_ville.capitalize()), 'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'), 'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'), 'allDay': False, 'color': color, 'textColor': 'Black', 'url': '/dossier_view/%s' % (row.nodossier), } events.append(json_event) return { 'page_title': 'Agenda de %s' % agenda, 'calendar_events': json.dumps(events), 'agendas': agendas, 'agenda': agenda, 'isCommercial': isCommercial, 'types_rdv': types_rdv, 'type_rdv': type_rdv, 'message': message, 'url': url, 'url_select': url_select, 'datePlan': datePlan, } @view_config(route_name='planning', renderer='../templates/agenda/planning.pt', permission='view') def planning(request): # construire la liste des ressources # {"id":"a","title":"Auditorium A"} ressources = [] # liste des users avec agenda users = get_users_agenda(request, '') for row in users: json_ressources = { 'id': row.CD_UTI, 'title': row.NOM } ressources.append(json_ressources) # construire la liste des events events = [] for user in users: rows = get_rendez_vous(request, user.CD_UTI) for row in rows: # déterminer la couleur de l'event selon la societe societe = row.nodossier[0:2] if societe == "PE": color = "#ffffb3" elif societe == "ME": color = "#ffe44d" elif societe == "PL": color = "#b3ff66" elif societe == "PO": color = "#b1dae7" else: color = "#ffb3cc" json_event = { 'resourceId': user.CD_UTI, 'title': row.c_nom, 'description': '%s %s' % (row.c_cp, row.c_ville.capitalize()), 'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'), 'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'), 'allDay': False, 'color': color, 'textColor': 'Black', 'url': '/dossier_view/%s' % (row.nodossier), } events.append(json_event) return { 'page_title': 'Planning', 'calendar_events': json.dumps(events), 'calendar_ressources': json.dumps(ressources), }