# -*- 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 from ..security import groupfinder import json from ..models.agenda import * from ..models.default import * @view_config(route_name='rdv_edit', renderer='../templates/agenda/rdv_edit.pt', permission='view') def rdv_edit(request): logged_in = request.authenticated_userid nodossier = request.matchdict['nodossier'] nolig = request.matchdict['nolig'] url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig) message = '' # 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= u"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() 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=rdv.rdv_debut.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, 'nodossier': nodossier, 'nolig': nolig, '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 if datePlan == 'today': datePlan = date.today().strftime('%Y-%m-%d') url = request.route_url('planning', date=datePlan) url_select = request.route_url('dossier_select', date=datePlan) # recall code et nom élève if 'mem_nodossier' in request.session: mem_nodossier = request.session['mem_nodossier'] mem_nomdossier = request.session['mem_nomdossier'] else: mem_nodossier = 'Aucun' mem_nomdossier = u'dossier sélectionné' # liste des users avec agenda agendas = get_users_agenda(request) # le user a-t-il un agenda ? agenda = 'JMD' for item in agendas: if item.CD_UTI == logged_in.upper(): agenda = item.CD_UTI # prendre en compte les paramètres de saisie if 'agenda' in request.params: agenda = request.params["agenda"] 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 = "LightYellow" elif societe == "PL": color = "LightGreen" elif societe == "PO": color = "LightBlue" else: color = "Gold" json_event = { 'title': row.c_nom, 'description': 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': '/rdv_edit/%s/%s' % (row.nodossier, row.nolig), } events.append(json_event) return { 'page_title': 'Agenda', 'fullcalendar_events': json.dumps(events), 'agendas': agendas, 'agenda': agenda, 'message': message, 'mem_nodossier': mem_nodossier, 'mem_nomdossier': mem_nomdossier, 'url_select': url_select, } @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 = "LightYellow" elif societe == "PL": color = "LightGreen" elif societe == "PO": color = "LightBlue" else: color = "Gold" json_event = { 'resourceId': user.CD_UTI, 'title': row.c_nom, 'description': 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', 'fullcalendar_events': json.dumps(events), 'fullcalendar_ressources': json.dumps(ressources), }