167 lines
5.2 KiB
Python
167 lines
5.2 KiB
Python
# -*- 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').n
|
|
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,
|
|
}
|
|
|