# -*- 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.parametres import * from ..models.default import * from ..views.default import * @view_config(route_name='parametres', renderer='../templates/parametres/parametres.pt', permission='manage') def parametres(request): logged_in = request.authenticated_userid.lower() return { 'page_title': u"Paramètres", 'logged_in': logged_in, } @view_config(route_name='users_list', renderer='../templates/parametres/users_list.pt', permission='manage') def users_list(request): # lire les utilisateurs items = get_member_by_id(request, '0') # construire la liste liste=[] for item in items: if item.actif == 0: etat = 'Inactif' else: etat = '' if item.access == 0: role = 'Commercial' elif item.access == 8: role = 'Compta' elif item.access == 9: role = 'Admin' else: role = 'Gestion' d = (item.CD_UTI, item.NOM, item.email, item.agenda, role, etat) liste.append(d) return { 'page_title': u'Liste des utilisateurs', 'dt_data': json.dumps(liste), } @view_config(route_name='users_ua', renderer='../templates/parametres/users_ua.pt', permission='manage') def users_ua(request): # lire les utilisateurs items = get_member_by_id(request, '0') # construire la liste liste=[] for item in items: # utilisateur a au moins une connexion ? if item.dern_cnx_le: der_cnx_le = item.dern_cnx_le.strftime('%d/%m/%Y - %H:%M') d = (der_cnx_le, item.CD_UTI, item.NOM, item.ua_string) liste.append(d) return { 'page_title': u'Liste des connexions', 'dt_data': json.dumps(liste), } @view_config(route_name='connecter_a', permission='manage') def connecter_a(request): # paramètre fourni ? login = request.matchdict["login"] if len(login) > 0: request.session.invalidate() headers = forget(request) headers = remember(request, login) return HTTPFound(location="/", headers=headers) else: return HTTPFound(location="/") @view_config(route_name='user_edit', renderer='../templates/parametres/user_edit.pt', permission='manage') def user_edit(request): cd_uti = request.matchdict['cd_uti'] url = request.route_url('user_edit', cd_uti=cd_uti) message = '' access = ["0 | Production", "5 | Gestion", u"8 | Comptabilité", "9 | Administration"] societes = ['PE','ME','PL','PO','CD'] if cd_uti == '0': # nouveau individu = {} individu['CD_UTI'] = '0' individu['NOM'] = '' individu['email'] = '' individu['access'] = '0 | Production' individu['actif'] = 1 individu['agenda'] = '' individu['societe'] = '' page_title= 'Nouvelle Fiche' lienmdp = '' else: # lire la fiche de l'individu individu = get_member_by_id(request, cd_uti) if not individu: request.session.flash(u"Utilisateur non trouvé : %s" % cd_uti, 'warning') return HTTPFound(location=request.route_url('users_list')) page_title= u"Fiche de %s" %(individu.NOM) lienmdp = '%s/%s' % (individu.CD_UTI, date.today().strftime('%d%m%Y')) if 'form.submitted' in request.params: new_values = {} for param, db_value in individu.items(): if param in request.params and request.params[param] != db_value: new_values[param] = request.params[param] # actif coché ? if 'actif' in request.params: new_values['actif'] = 1 else: new_values['actif'] = 0 if new_values: update_membre(request, cd_uti, new_values) request.session.flash(u"La fiche a été mise à jour avec succès.", 'success') return HTTPFound(location=request.route_url('users_list')) if 'form.deleted' in request.params: delete_membre(request, cd_uti) request.session.flash(u"La fiche a été supprimée avec succès.", 'success') return HTTPFound(location=request.route_url('users_list')) return { 'page_title': page_title, 'url': url, 'individu': individu, 'access': access, 'societes': societes, 'message': message, 'lienmdp': lienmdp, } @view_config(route_name='dashboard', renderer='../templates/parametres/dashboard.pt', permission='manage') def dashboard(request): # lire le log de nuit log_nuit = get_log_nuit(request) return { 'page_title': u"Tableau de bord", 'log_nuit': log_nuit, } @view_config(route_name='last_emailing', renderer='../templates/parametres/last_emailing.pt', permission='manage') def last_emailing(request): items = get_last_emailing(request) # construire la liste liste=[] for item in items: if item.rdv_date: resa_date = item.rdv_date.strftime('%d-%m-%Y') else: resa_date = "" if item.envoye_le: envoye_le = item.envoye_le.strftime('%d-%m-%Y %H:%M') else: envoye_le = "" d = (resa_date, '%s-%s' % (item.societe, item.nochantier), item.nompren, item.email, item.rdv_statut, envoye_le, item.cree_le.strftime('%d-%m-%Y %H:%M')) liste.append(d) return { 'page_title': u'Liste des derniers emailing', 'dt_data': json.dumps(liste), } @view_config(route_name='orphans_de', renderer='../templates/parametres/orphans_de.pt', permission='manage') def orphans_de(request): societe = request.matchdict['societe'] url = request.route_url('orphans_de', societe=societe) message = u'' societes = ['PE','ME','PL','PO','CD'] nochantier = '0' # prendre en compte les paramètres de saisie if 'societe' in request.params: societe = request.params["societe"] url = request.route_url('orphans_de', societe=societe) if 'form.nochantier' in request.params: message = '' nochantier = request.params['nochantier'] # oui, NestedMultiDict([('form.submitted', u''), ('id0', u'271246'), ('id1', u'370929')]) for param in request.params: if param[:2] == 'id': update_nochantier(request, societe, request.params[param], int(nochantier)) message = u"Le numéro de chantier est mis à jour avec succès" # lire le premier devis orphelin devis = get_orphans_DE(request, societe) # lire tous les dossiers de ce chantier dossiers = get_dossiers_byChantier(request, societe, '%s;%s;%s' % (devis.C_NOM, devis.C_ADR, devis.C_VILLE)) liste=[] nochantiers=[] # construire la liste for item in dossiers: dossier_id = '%s-%s' % (item.TYPE, item.numero) if item.nochantier != 0: nochantiers.append(item.nochantier) nochantier = item.nochantier d = (dossier_id, dossier_id, item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant), item.nosin, item.nochantier) liste.append(d) if len(nochantiers) == 0: nochantiers.append(1) return { 'page_title': u"DEVIS orphelins", 'url': url, 'message': message, 'devis': devis, 'dt_data': json.dumps(liste), 'societes': societes, 'societe': societe, 'nochantiers': nochantiers, 'nochantier': nochantier, } @view_config(route_name='rdf_causes_list', renderer='../templates/parametres/rdf_causes_list.pt', permission='manage') def rdf_causes_list(request): # lire les causes des RDF items = get_rdf_causes_by_id(request, '0') # construire la liste liste=[] for item in items: modif_le = item.modif_le.strftime('%d/%m/%Y - %H:%M') d = (item.code, item.libelle, modif_le) liste.append(d) return { 'page_title': u'RDF : Liste des causes de fuite', 'dt_data': json.dumps(liste), } @view_config(route_name='rdf_cause_edit', renderer='../templates/parametres/rdf_cause_edit.pt', permission='view') def rdf_cause_edit(request): logged_in = request.authenticated_userid old_code = request.matchdict['code'] url = request.route_url("rdf_cause_edit", code=old_code) message = '' if old_code == '0': # nouveau cause = {} cause['code'] = '' cause['libelle'] = '' cause['modif_le'] = datetime.now() page_title= 'Nouvelle cause de fuite' else: page_title= "Modification de %s" % (old_code) # lire la cause cause = get_rdf_causes_by_id(request, old_code) if not cause: request.session.flash(u"Cause non trouvée : %s" % old_code, 'warning') return HTTPFound(location=request.route_url('rdf_causes_list')) if 'form.submitted' in request.params: code = request.params['code'] libelle = request.params['libelle'] update_rdf_cause(request, old_code, code, libelle) request.session.flash(u"La cause a été mise à jour avec succès.", 'success') return HTTPFound(location=request.route_url('rdf_causes_list')) if 'form.deleted' in request.params: delete_rdf_cause(request, old_code) request.session.flash(u"La cause a été supprimée avec succès.", 'success') return HTTPFound(location=request.route_url('rdf_causes_list')) return { 'page_title': page_title, 'url': url, 'old_code': old_code, 'cause': cause, 'message': message, } @view_config(route_name='emails_sent', renderer='../templates/parametres/emails_sent.pt', permission='view') def emails_sent(request): societes = ['PE','ME','PL','PO','CD'] societe = 'PE' # prendre en compte les paramètres de saisie if 'societe' in request.params: societe = request.params["societe"] # lire les messages envoyés items = get_emails_sent(request, societe, 0) # construire la liste liste=[] for item in items: d = (item.datemaj.strftime('%d/%m/%Y - %H:%M'), item.nodossier, item.nomcli, item.comment, item.nolig, item.usermaj) liste.append(d) return { 'page_title': u'Liste des emails envoyés', 'dt_data': json.dumps(liste), 'societe': societe, 'societes': societes, } @view_config(route_name='emails_msg', renderer='../templates/parametres/emails_msg.pt', permission='view') def emails_msg(request): nolig = request.matchdict['nolig'] # lire le message item = get_emails_sent(request, '', nolig) if not item: request.session.flash("Impossible de lire le message %s" % nolig, 'damger') return HTTPFound(location=request.route_url('rdf_causes_list')) return { 'page_title': item.COMMENT, 'item': item, }