# -*- 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.security import ( authenticated_userid, remember, forget, ) 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): nodossier = request.matchdict['nodossier'] nolig = request.matchdict['nolig'] url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig) message = '' if nolig == '0': # nouveau comment = '' commentvi = '' date_rdv = datetime.now() 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('dossier_view', nodossier=nodossier)) comment = rdv.COMMENT commentvi = rdv.COMMENTVI date_rdv = rdv.rdv_debut page_title= u"Modification du rdv du %s" % (rdv.rdv_debut.strftime('%d-%m-%Y %H:%M')) if 'form.submitted' in request.params: comment = request.params['comment'] commentvi = request.params['commentvi'] date_rdv = request.params['date_rdv'] update_rdv(request, nodossier, nolig, comment, commentvi, date_rdv) request.session.flash(u"Le rendez-vous a été mis à jour avec succès.", 'success') return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier)) 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('dossier_view', nodossier=nodossier)) return { 'page_title': page_title, 'url': url, 'nodossier': nodossier, 'nolig': nolig, 'comment': comment, 'commentvi': commentvi, 'date_rdv': date_rdv, 'message': message, } @view_config(route_name='dossier_view', renderer='../templates/agenda/dossier_view.pt', permission='view') def dossier_view(request): nodossier = request.matchdict['nodossier'] url = request.route_url("dossier_view", nodossier=nodossier) dossier = get_dossier_by_no(request, nodossier) if dossier is None: request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger') return HTTPFound(location=request.route_url("agenda")) # lire tous le suivi du dossier details = get_dossier_rdv_by_no(request, nodossier, '0') return { 'page_title': u"Dossier : %s" % (nodossier), 'nodossier': nodossier, 'dossier': dossier, 'details': details, } @view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt') def agenda(request): logged_in = authenticated_userid(request) agenda = 'J' access = 0 member = get_member_by_id(request, logged_in) if member: access = member.access # determiner l'agenda du user agenda = member.agenda if not agenda: agenda = 'J' else: request.session.flash(u"Identifiant %s introuvable" % (logged_in), 'danger') return HTTPFound(location=request.route_url("/")) if access >= 5: # si gestionnaire, lire les différents AGENDAS agendas = get_agendas(request,'') else: agendas = [] # prendre en compte les paramètres de saisie if 'agenda' in request.params: agenda = request.params["agenda"] personne = get_agendas(request,agenda) rows = get_rendez_vous(request, agenda) page_title = u"Agenda de %s" % personne.nom # construire la liste des events events = [] for row in rows: event_url = 'dossier_view/%s' % (row.nodossier) event_title = row.c_nom # déterminer la couleur de l'event selon la societe societe = row.nodossier[0:2] if societe == "PE": color = "#d9534f" # rouge danger elif societe == "PL": color = "#5cb85c" # vert success elif societe == "PL": color = "#5bc0de" # bleu info else: color = "#f0ad4e" # orange warning json_event = { 'title': event_title, '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, 'url': event_url, } events.append(json_event) return { 'page_title': page_title, 'fullcalendar_events': json.dumps(events), 'agendas': agendas, 'agenda': agenda, 'access': access, }