chargement initial
This commit is contained in:
200
caotek_mesavoirs/views/agenda.py
Normal file
200
caotek_mesavoirs/views/agenda.py
Normal file
@@ -0,0 +1,200 @@
|
||||
# -*- 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', permission='view')
|
||||
def agenda(request):
|
||||
logged_in = authenticated_userid(request)
|
||||
member = get_member_by_id(request, logged_in)
|
||||
if not member:
|
||||
request.session.flash(u"Identifiant %s introuvable" % (logged_in), 'danger')
|
||||
return HTTPFound(location=request.route_url("/home"))
|
||||
|
||||
rows = get_rendez_vous(request, logged_in)
|
||||
page_title = u"Agenda de %s" % member.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),
|
||||
}
|
||||
|
||||
@view_config(route_name='planning', renderer='../templates/agenda/planning.pt', permission='view')
|
||||
def planning(request):
|
||||
logged_in = authenticated_userid(request)
|
||||
member = get_member_by_id(request, logged_in)
|
||||
if not member:
|
||||
request.session.flash(u"Identifiant %s introuvable" % (logged_in), 'danger')
|
||||
return HTTPFound(location=request.route_url("/home"))
|
||||
|
||||
# determiner le rôle du user
|
||||
access = member.access
|
||||
agendas = get_agendas(request)
|
||||
|
||||
agenda = 'JMD'
|
||||
# prendre en compte les paramètres de saisie
|
||||
if 'agenda' in request.params:
|
||||
agenda = request.params["agenda"]
|
||||
|
||||
personne = get_member_by_id(request,agenda)
|
||||
rows = get_rendez_vous(request, agenda)
|
||||
|
||||
# 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': 'Planning',
|
||||
'fullcalendar_events': json.dumps(events),
|
||||
'agendas': agendas,
|
||||
'agenda': agenda,
|
||||
'access': access,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user