# -*- 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 import get_mailer 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='member_edit', renderer='../templates/agenda/member_edit.pt', permission='view') def member_edit(request): mbr_id = request.matchdict['mbr_id'] url = request.route_url("member_edit", mbr_id=mbr_id) message = '' civilites = ["M.","M.Mme","Mme"] etats = [u"Actif",u"Décédé",u"NPAI"] if mbr_id == '0': # nouveau membre = {} membre['mbr_id'] = 0 membre['civilite'] = 'Mme' membre['nom'] = '' membre['prenom'] = '' membre['adresse'] = '' membre['adresse2'] = '' membre['cp'] = '' membre['ville'] = '' membre['email'] = '' membre['tel_fixe'] = '' membre['tel_mobile'] = '' membre['phap_danh'] = '0' membre['notes'] = '' membre['etat'] = 'Actif' membre['statut'] = 'HV' page_title= 'Nouvelle Fiche' else: # lire la fiche de l'membre membre = get_member_by_id(request, mbr_id) if not membre: request.session.flash(u"Membre non trouvé : %s" % id, 'warning') return HTTPFound(location=request.route_url('members')) page_title= u"Modification de la fiche no %s" %(membre.mbr_id) if 'form.submitted' in request.params: new_values = {} for param, db_value in membre.items(): if param in request.params and request.params[param] != db_value: new_values[param] = request.params[param] if new_values: update_membre(request, mbr_id, new_values) request.session.flash(u"La fiche a été mise à jour avec succès.", 'success') if mbr_id == '0': return HTTPFound(location=request.route_url('members')) else: return HTTPFound(location=request.route_url('member_view', mbr_id=mbr_id)) if 'form.deleted' in request.params: delete_membre(request, mbr_id) request.session.flash(u"La fiche a été supprimée avec succès.", 'success') return HTTPFound(location=request.route_url('members')) return { 'page_title': page_title, 'url': url, 'membre': membre, 'etats': etats, 'civilites': civilites, 'message': message, } @view_config(route_name='member_view', renderer='../templates/agenda/member_view.pt', permission='view') def member_view(request): mbr_id = request.matchdict['mbr_id'] url = request.route_url("member_view", mbr_id=mbr_id) member = get_member_by_id(request, mbr_id) if member is None: request.session.flash(u"La fiche no %s est introuvable" % (mbr_id), 'danger') return HTTPFound(location=request.route_url("members")) # lire tous les dons du membre dons = get_dons_by_mbr(request, mbr_id, 0) return { 'page_title': u"[#%s] : %s %s" % (mbr_id, member.nom, member.prenom), 'member': member, 'dons': dons, } @view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt') def agenda(request): logged_in = authenticated_userid(request) member = get_member_by_id(request, logged_in) if member: agenda = member.agenda if not agenda: agenda = 'J' else: agenda = 'J' # lire les différents AGENDAS agendas = get_agendas(request,'') # 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 = 'agenda_event/%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 = "#ff4444" # rouge danger elif societe == "PL": color = "#00C851" # vert success elif societe == "PL": color = "#33b5e5" # bleu info else: color = "#ffbb33" # 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, }