Files
dumas_gestion/mondumas/views/parametres.py

220 lines
7.0 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.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.dern_cnx_le:
der_cnx_le = item.dern_cnx_le.strftime('%d/%m/%Y - %H:%M')
else:
der_cnx_le = ""
if item.actif == 0:
etat = 'Inactif'
else:
etat = ''
if item.access == 0:
role = ''
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, der_cnx_le, etat)
liste.append(d)
return {
'page_title': u'Liste des utilisateurs',
'dt_data': json.dumps(liste),
}
@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"]
if cd_uti == '0':
# nouveau
individu = {}
individu['cd_uti'] = '0'
individu['nom'] = ''
individu['email'] = ''
individu['access'] = '0 | Production'
individu['actif'] = 1
individu['agenda'] = 0
page_title= 'Nouvelle Fiche'
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)
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
# agenda coché ?
if 'agenda' in request.params:
new_values['agenda'] = 1
else:
new_values['agenda'] = 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,
'message': message,
}
@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)
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,
}