création acces = Consultation et table p_acces

This commit is contained in:
2021-11-10 18:31:31 +01:00
parent 3c23bf36ea
commit c8883bda11
12 changed files with 53 additions and 59 deletions

View File

@@ -33,31 +33,29 @@ def get_member_by_mdp_oublie(request, lien):
def get_member_by_id(request, mbr_id): def get_member_by_id(request, mbr_id):
if mbr_id == '0': if mbr_id == '0':
query = "SELECT * FROM p_users ORDER BY cd_uti" query = """SELECT p_users.*, p_acces.libelle FROM p_users
INNER JOIN p_acces ON p_acces.code = p_users.access
ORDER BY cd_uti"""
results = request.dbsession.execute(query).fetchall() results = request.dbsession.execute(query).fetchall()
else: else:
# lire le membres par son identifianr # lire le membres par son identifianr
query = """SELECT * FROM p_users WHERE CD_UTI=:mbr_id;""" query = """SELECT p_users.*, p_acces.libelle FROM p_users
INNER JOIN p_acces ON p_acces.code = p_users.access
WHERE CD_UTI=:mbr_id;"""
results = request.dbsession.execute(query, {'mbr_id': mbr_id}).first() results = request.dbsession.execute(query, {'mbr_id': mbr_id}).first()
return results return results
def get_member_info(request, logged_in): def get_member_info(request, logged_in):
# lire le membres par son identifianr # lire le membres par son identifianr
query = """SELECT nom, email, access, societe FROM p_users WHERE CD_UTI=:logged_in;""" query = """SELECT u.nom, u.email, u.access, u.societe, p_acces.libelle FROM p_users u
INNER JOIN p_acces ON p_acces.code = u.access
WHERE CD_UTI=:logged_in;"""
results = request.dbsession.execute(query, {'logged_in': logged_in}).first() results = request.dbsession.execute(query, {'logged_in': logged_in}).first()
if results.access == 9:
fonction = 'Administrateur'
elif results.access == 8:
fonction = 'Comptabilité'
elif results.access == 5:
fonction = 'Gestion'
else:
fonction = 'Production'
return { return {
'nom': results.nom, 'nom': results.nom,
'email': results.email, 'email': results.email,
'fonction': fonction, 'fonction': results.libelle,
'societe': results.societe, 'societe': results.societe,
} }
@@ -88,9 +86,6 @@ def update_membre(request, cd_uti, new_values):
for param in new_values.keys(): for param in new_values.keys():
if param == 'nom': if param == 'nom':
new_values['nom'] = new_values['nom'].upper() new_values['nom'] = new_values['nom'].upper()
if param == 'access':
' ne prend que le 1er caractère'
new_values['access'] = new_values['access'][0]
if s: if s:
s += ",%s=:%s" % (param, param) s += ",%s=:%s" % (param, param)

View File

@@ -1,17 +1,8 @@
# -*- coding: utf8 -*- # -*- coding: utf8 -*-
from sqlalchemy import text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
)
from zope.sqlalchemy import ( from zope.sqlalchemy import (
ZopeTransactionExtension,
mark_changed mark_changed
) )
from datetime import *
import dateutil.relativedelta
import transaction import transaction
def execute_query(request, query, params): def execute_query(request, query, params):
@@ -33,7 +24,6 @@ def get_rappels_rdv(request):
return results.fetchall() return results.fetchall()
def get_dossiers_byChantier(request, societe, name): def get_dossiers_byChantier(request, societe, name):
query = "CALL spGET_DOSSIERS_byChantier('%s','%s','%s');" % (societe, 'DE', name.replace("'","''")) query = "CALL spGET_DOSSIERS_byChantier('%s','%s','%s');" % (societe, 'DE', name.replace("'","''"))
results = request.dbsession.execute(query).fetchall() results = request.dbsession.execute(query).fetchall()
return results return results
@@ -227,3 +217,8 @@ def get_tarif(request, groupe, ref):
query = "SELECT * FROM tarifs WHERE groupe = :groupe and ref = :ref;" query = "SELECT * FROM tarifs WHERE groupe = :groupe and ref = :ref;"
results = request.dbsession.execute(query, {'groupe': groupe, 'ref': ref}).first() results = request.dbsession.execute(query, {'groupe': groupe, 'ref': ref}).first()
return results return results
def get_p_acces(request):
query = """SELECT * FROM p_acces ORDER BY code;"""
results = request.dbsession.execute(query).fetchall()
return results

View File

@@ -8,7 +8,7 @@
<form method="POST" id="frm" class="form-horizontal"> <form method="POST" id="frm" class="form-horizontal">
<div class="form-group"> <div class="form-group">
<div class="col-xs-4"> <div class="col-xs-4">
<select class="form-control" id="agenda" name="agenda" onChange="$('#frm').submit()" tal:condition="access > 0"> <select class="form-control" id="agenda" name="agenda" onChange="$('#frm').submit()" tal:condition="access > 1">
<div tal:repeat="item agendas"> <div tal:repeat="item agendas">
<option value="${item.CD_UTI}" tal:attributes="selected agenda==item.CD_UTI and 'selected' or None">${item.NOM}</option> <option value="${item.CD_UTI}" tal:attributes="selected agenda==item.CD_UTI and 'selected' or None">${item.NOM}</option>
</div> </div>

View File

@@ -61,7 +61,7 @@
<div class="col-sm-offset-3 col-sm-9"> <div class="col-sm-offset-3 col-sm-9">
<a class="btn btn-default" href="/agenda/${rdv.rdv_debut.strftime('%Y-%m-%d')}"> <a class="btn btn-default" href="/agenda/${rdv.rdv_debut.strftime('%Y-%m-%d')}">
<span class="glyphicon glyphicon-arrow-left"></span> Annuler</a> <span class="glyphicon glyphicon-arrow-left"></span> Annuler</a>
<button class="btn btn-primary" type="submit" name="form.submitted"> <button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="access > 1">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button> <span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
<button class="btn btn-danger" type="submit" name="form.deleted" <button class="btn btn-danger" type="submit" name="form.deleted"
tal:condition="nolig != '0' and logged_in.upper()==rdv.USERMAJ.upper()"> tal:condition="nolig != '0' and logged_in.upper()==rdv.USERMAJ.upper()">

View File

@@ -15,7 +15,7 @@
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-4"> <div class="col-xs-4" tal:condition="access != 1">
<a href="${request.application_url}/rdf_list"> <a href="${request.application_url}/rdf_list">
<div class="info-box bg-green"> <div class="info-box bg-green">
<span class="info-box-icon"><i class="glyphicon glyphicon-tint"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-tint"></i></span>
@@ -51,7 +51,7 @@
</a> </a>
</div> </div>
<div class="col-xs-4"> <div class="col-xs-4">
<a href="${request.application_url}/demandes" tal:condition="access > 0"> <a href="${request.application_url}/demandes" tal:condition="access > 1">
<div class="info-box bg-gest"> <div class="info-box bg-gest">
<span class="info-box-icon"><i class="glyphicon glyphicon-envelope"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-envelope"></i></span>
<div class="info-box-content"> <div class="info-box-content">
@@ -62,7 +62,7 @@
</a> </a>
</div> </div>
<div class="col-xs-4"> <div class="col-xs-4">
<a href="${request.application_url}/upload_om" tal:condition="access > 0"> <a href="${request.application_url}/upload_om" tal:condition="access > 1">
<div class="info-box bg-gest"> <div class="info-box bg-gest">
<span class="info-box-icon"><i class="glyphicon glyphicon-download-alt"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-download-alt"></i></span>
<div class="info-box-content"> <div class="info-box-content">
@@ -77,7 +77,7 @@
<br /> <br />
<div class="row"> <div class="row">
<div class="col-xs-4"> <div class="col-xs-4">
<a href="${request.application_url}/dem_devis" tal:condition="access > 0"> <a href="${request.application_url}/dem_devis" tal:condition="access > 1">
<div class="info-box bg-gest"> <div class="info-box bg-gest">
<span class="info-box-icon"><i class="glyphicon glyphicon-folder-open"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-folder-open"></i></span>
<div class="info-box-content"> <div class="info-box-content">
@@ -91,7 +91,7 @@
</a> </a>
</div> </div>
<div class="col-xs-4"> <div class="col-xs-4">
<a href="${request.application_url}/dern_suivis" tal:condition="access > 0"> <a href="${request.application_url}/dern_suivis" tal:condition="access > 1">
<div class="info-box bg-gest"> <div class="info-box bg-gest">
<span class="info-box-icon"><i class="glyphicon glyphicon-file"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-file"></i></span>
<div class="info-box-content"> <div class="info-box-content">
@@ -105,7 +105,7 @@
</a> </a>
</div> </div>
<div class="col-xs-4"> <div class="col-xs-4">
<a href="${request.application_url}/factures_en_att" tal:condition="access > 0"> <a href="${request.application_url}/factures_en_att" tal:condition="access > 1">
<div class="info-box bg-gest"> <div class="info-box bg-gest">
<span class="info-box-icon"><i class="glyphicon glyphicon-inbox"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-inbox"></i></span>
<div class="info-box-content"> <div class="info-box-content">
@@ -133,7 +133,7 @@
</a> </a>
</div> </div>
<div class="col-xs-4"> <div class="col-xs-4">
<a href="${request.application_url}/devis_list"> <a href="${request.application_url}/devis_list" tal:condition="logged_in == 'CAO'">
<div class="info-box bg-prod"> <div class="info-box bg-prod">
<span class="info-box-icon"><i class="glyphicon glyphicon-text-height"></i></span> <span class="info-box-icon"><i class="glyphicon glyphicon-text-height"></i></span>
<div class="info-box-content"> <div class="info-box-content">

View File

@@ -61,7 +61,7 @@
<div class="col-md-6"> <div class="col-md-6">
<h4> <h4>
Statut : ${entete.libelle}&nbsp;&nbsp;&nbsp; Statut : ${entete.libelle}&nbsp;&nbsp;&nbsp;
[ <a href="#" data-toggle="modal" data-target="#confirmStatut">Modifier le statut</a> ] [ <a href="#" data-toggle="modal" data-target="#confirmStatut" tal:condition="access > 1">Modifier le statut</a> ]
</h4> </h4>
<div tal:condition="type_doc=='DE'"> <div tal:condition="type_doc=='DE'">
<p>Dernière modif. le <b>${entete.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${entete.USERMAJ}</b></p> <p>Dernière modif. le <b>${entete.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${entete.USERMAJ}</b></p>
@@ -70,7 +70,7 @@
</div> </div>
</div> <!-- row --> </div> <!-- row -->
<!-- ENTETE entete --> <!-- ENTETE entete -->
<table class="table table-bordered table-condensed" tal:condition="access > 0"> <table class="table table-bordered table-condensed" tal:condition="access > 1">
<tr class="well"> <tr class="well">
<th class="text-right">Total HT</th> <th class="text-right">Total HT</th>
<th class="text-right">Total TVA</th> <th class="text-right">Total TVA</th>
@@ -98,8 +98,8 @@
<td>${detail.REF}</td> <td>${detail.REF}</td>
<td>${detail.LIB}</td> <td>${detail.LIB}</td>
<td class="text-right">${detail.QTE}</td> <td class="text-right">${detail.QTE}</td>
<td class="text-right"><span tal:condition="access > 0">${layout.to_euroz(detail.PRIXHT)}</span></td> <td class="text-right"><span tal:condition="access > 1">${layout.to_euroz(detail.PRIXHT)}</span></td>
<td class="text-right"><span tal:condition="access > 0">${layout.to_euroz(detail.MTHT)}</span></td> <td class="text-right"><span tal:condition="access > 1">${layout.to_euroz(detail.MTHT)}</span></td>
<td class="text-center">${detail.USERMAJ}</td> <td class="text-center">${detail.USERMAJ}</td>
</tr> </tr>
</table> </table>

View File

@@ -9,7 +9,8 @@
<tr> <tr>
<td> <td>
<h4>CHANTIER</h4> <h4>CHANTIER</h4>
<a href="${request.application_url}/dossier_edit/${nodossier}" class="btn btn-primary" role="button"> <a href="${request.application_url}/dossier_edit/${nodossier}" tal:condition="access > 1"
class="btn btn-primary" role="button">
<span class="glyphicon glyphicon-pencil"></span>&nbsp;Modifier</a> <span class="glyphicon glyphicon-pencil"></span>&nbsp;Modifier</a>
</td> </td>
<td> <td>
@@ -100,7 +101,7 @@
<br /> <br />
<h4> <h4>
Statut : <span class="label label-warning">${dossier.libelle}</span>&nbsp;&nbsp;&nbsp; Statut : <span class="label label-warning">${dossier.libelle}</span>&nbsp;&nbsp;&nbsp;
[ <a href="#" data-toggle="modal" data-target="#confirmStatut">Modifier le statut</a> ] [ <a href="#" data-toggle="modal" data-target="#confirmStatut" tal:condition="access > 1">Modifier le statut</a> ]
</h4> </h4>
<p>Dernière modif. le <b>${dossier.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${dossier.USERMAJ}</b></p> <p>Dernière modif. le <b>${dossier.DATEMAJ.strftime('%d/%m/%Y à %H:%M')}</b> par <b>${dossier.USERMAJ}</b></p>
@@ -138,7 +139,7 @@
<div class="tab-content"> <div class="tab-content">
<div id="tab_suivi" class="tab-pane fade in active"> <div id="tab_suivi" class="tab-pane fade in active">
<h3>SUIVI du DOSSIER</h3> <h3>SUIVI du DOSSIER</h3>
<p> <p tal:condition="access > 1">
<a class="btn btn-success" role="button" href="${request.route_url('suivi_edit', nodossier=nodossier, nolig='0')}"> <a class="btn btn-success" role="button" href="${request.route_url('suivi_edit', nodossier=nodossier, nolig='0')}">
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a> <span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a>
<a class="btn btn-success" role="button" href="${request.route_url('rdv_edit', nodossier=nodossier, nolig='0')}"> <a class="btn btn-success" role="button" href="${request.route_url('rdv_edit', nodossier=nodossier, nolig='0')}">
@@ -207,7 +208,7 @@
</td> </td>
<td>${detail.date.strftime('%d-%m-%Y')}</td> <td>${detail.date.strftime('%d-%m-%Y')}</td>
<td>${detail.nomcli}</td> <td>${detail.nomcli}</td>
<td class="text-right"><span tal:condition="access > 0">${layout.to_euro(detail.montant)}</span></td> <td class="text-right"><span tal:condition="access > 1">${layout.to_euro(detail.montant)}</span></td>
<td class="text-center">${detail.status}</td> <td class="text-center">${detail.status}</td>
</tr> </tr>
</table> </table>
@@ -215,6 +216,7 @@
<!-- PANEL DOCS ATTACHES --> <!-- PANEL DOCS ATTACHES -->
<div id="tab_attaches" class="tab-pane fade"> <div id="tab_attaches" class="tab-pane fade">
<div tal:condition="access > 1">
<h3 class="text-center">DOCUMENTS ATTACHES</h3> <h3 class="text-center">DOCUMENTS ATTACHES</h3>
<p> <p>
<a href="${request.application_url}/upload_doc/${nodossier}/CLT" class="btn btn-success" role="button"> <a href="${request.application_url}/upload_doc/${nodossier}/CLT" class="btn btn-success" role="button">
@@ -247,7 +249,7 @@
<td class="text-center">${detail.usermaj}</td> <td class="text-center">${detail.usermaj}</td>
</tr> </tr>
</table> </table>
</div>
<h3 class="text-center">DOCUMENTS TECHNIQUES</h3> <h3 class="text-center">DOCUMENTS TECHNIQUES</h3>
<p> <p>
<a href="${request.application_url}/upload_doc/${nodossier}/FRN" class="btn btn-success" role="button"> <a href="${request.application_url}/upload_doc/${nodossier}/FRN" class="btn btn-success" role="button">

View File

@@ -36,7 +36,7 @@
<div class="form-group"> <div class="form-group">
<a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}"> <a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}">
<span class="glyphicon glyphicon-arrow-left"></span> Annuler</a> <span class="glyphicon glyphicon-arrow-left"></span> Annuler</a>
<button class="btn btn-primary" type="submit" name="form.submitted"> <button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="access > 1">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button> <span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
<button class="btn btn-danger" type="submit" name="form.deleted" <button class="btn btn-danger" type="submit" name="form.deleted"
tal:condition="nolig != '0' and logged_in.upper()==suivi.USERMAJ"> tal:condition="nolig != '0' and logged_in.upper()==suivi.USERMAJ">

View File

@@ -48,7 +48,8 @@
<div class="col-sm-9"> <div class="col-sm-9">
<select class="form-control" id="access" name="access"> <select class="form-control" id="access" name="access">
<div tal:repeat="item access"> <div tal:repeat="item access">
<option value="${item}" tal:attributes="selected str(individu.access)==item[0] and 'selected' or None">${item}</option> <option value="${item.code}" tal:attributes="selected individu.access==item.code and 'selected' or None">
${item.code} | ${item.libelle}</option>
</div> </div>
</select> </select>
</div> </div>

View File

@@ -32,6 +32,9 @@ def rdv_edit(request):
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig) url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
message = '' message = ''
# lire son niveau d'accès
member = get_member_by_id(request, logged_in)
access = member.access
# lire la liste des users avec agenda # lire la liste des users avec agenda
agendas = get_users_agenda(request, '') agendas = get_users_agenda(request, '')
# liste des types de rdv # liste des types de rdv
@@ -86,6 +89,7 @@ def rdv_edit(request):
'agendas': agendas, 'agendas': agendas,
'rdv': rdv, 'rdv': rdv,
'message': message, 'message': message,
'access': access,
} }
@view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt', permission='view') @view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt', permission='view')

View File

@@ -180,6 +180,10 @@ def suivi_edit(request):
nolig = request.matchdict['nolig'] nolig = request.matchdict['nolig']
url = request.route_url("suivi_edit", nodossier=nodossier, nolig=nolig) url = request.route_url("suivi_edit", nodossier=nodossier, nolig=nolig)
# lire son niveau d'accès
member = get_member_by_id(request, logged_in)
access = member.access
message = '' message = ''
if nolig == '0': if nolig == '0':
# nouveau # nouveau
@@ -226,6 +230,7 @@ def suivi_edit(request):
'nolig': nolig, 'nolig': nolig,
'suivi': suivi, 'suivi': suivi,
'message': message, 'message': message,
'access': access,
} }
@view_config(route_name='dossier_edit', renderer='../templates/dossier/dossier_edit.pt', permission='view') @view_config(route_name='dossier_edit', renderer='../templates/dossier/dossier_edit.pt', permission='view')

View File

@@ -59,16 +59,7 @@ def users(request):
else: else:
etat = '' etat = ''
if item.access == 5: d = (item.CD_UTI, item.NOM, item.email, item.agenda, item.libelle, item.societe, etat)
role = 'Gestion'
elif item.access == 8:
role = 'Compta'
elif item.access == 9:
role = 'Admin'
else:
role = 'Production'
d = (item.CD_UTI, item.NOM, item.email, item.agenda, role, item.societe, etat)
liste.append(d) liste.append(d)
return { return {
@@ -113,7 +104,8 @@ def user_edit(request):
cd_uti = request.matchdict['cd_uti'] cd_uti = request.matchdict['cd_uti']
url = request.route_url('user_edit', cd_uti=cd_uti) url = request.route_url('user_edit', cd_uti=cd_uti)
message = '' message = ''
access = ["0 | Production", "5 | Gestion", "8 | Comptabilité", "9 | Administration"]
access = get_p_acces(request)
societes = ['PE','ME','PL','PO','CD'] societes = ['PE','ME','PL','PO','CD']
if cd_uti == '0': if cd_uti == '0':
@@ -122,7 +114,7 @@ def user_edit(request):
individu['CD_UTI'] = '0' individu['CD_UTI'] = '0'
individu['NOM'] = '' individu['NOM'] = ''
individu['email'] = '' individu['email'] = ''
individu['access'] = '0 | Production' individu['access'] = 0
individu['actif'] = 1 individu['actif'] = 1
individu['agenda'] = '' individu['agenda'] = ''
individu['societe'] = '' individu['societe'] = ''