ajout : création du rapport de RDF

This commit is contained in:
2019-02-27 16:15:43 +01:00
parent 45d9b75a22
commit 145501fe81
19 changed files with 772 additions and 295 deletions

View File

@@ -34,6 +34,25 @@ def get_member_by_id(request, 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):
# lire le membres par son identifianr
query = """SELECT nom, email, access FROM p_users WHERE CD_UTI=:logged_in;"""
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 = 'Commercial'
return {
'nom': results.nom,
'email': results.email,
'fonction': fonction,
}
def update_membre_mdp_oublie(request, login): def update_membre_mdp_oublie(request, login):
# get a UUID - URL safe, Base64 # get a UUID - URL safe, Base64

View File

@@ -168,3 +168,39 @@ def insert_dossier_attaches(request, nodossier, filename, filesize, user):
query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nomfichier, taillefichier, cree_le, usermaj) query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nomfichier, taillefichier, cree_le, usermaj)
VALUES('DOCS_ATTACHES',:societe,:nochantier,:filename,:filesize,NOW(),:user);""" VALUES('DOCS_ATTACHES',:societe,:nochantier,:filename,:filesize,NOW(),:user);"""
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'filename': filename, 'filesize': filesize, 'user': user}) execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'filename': filename, 'filesize': filesize, 'user': user})
def get_rapport_by_no(request,nodossier):
societe = nodossier[0:2]
nochantier = nodossier[3:]
query = "SELECT * FROM dem_rdf where societe = :societe and nochantier = :nochantier;"
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
return results
def insert_rapport(request,nodossier,logged_in):
societe = nodossier[0:2]
nochantier = nodossier[3:]
query = """INSERT INTO dem_rdf (societe, nochantier, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, usermaj)
SELECT societe, no_id, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, :logged_in FROM dem_devis WHERE societe = :societe AND no_id = :nochantier;"""
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'logged_in': logged_in})
def get_rdf_causes(request, code):
query = "SELECT libelle FROM rdf_causes where code LIKE :code;"
results = request.dbsession.execute(query, {'code': code + '%'}).fetchall()
return results
def update_rdf(request, nodossier, new_values):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
s = ''
for param in new_values.keys():
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
new_values['societe'] = societe
new_values['nochantier'] = nochantier
query = u"UPDATE dem_rdf SET %s WHERE societe=:societe AND nochantier=:nochantier" % s
execute_query(request, query, new_values)

View File

@@ -44,13 +44,23 @@ def get_dossiers_byChantier(request, societe, name):
results = request.dbsession.execute(query).fetchall() results = request.dbsession.execute(query).fetchall()
return results return results
def update_nochantier(request, societe, nodossier, nochantier): def get_rdf_causes_by_id(request, code):
x = nodossier.split('-') # lire les rdf_causes
type = x[0] if code == '0':
no_id = int(x[1]) query = """SELECT * FROM rdf_causes;"""
results = request.dbsession.execute(query).fetchall()
if type == 'DE':
query = "UPDATE devis SET nochantier = :nochantier WHERE societe = :societe and no_id = :no_id;"
else: else:
query = "UPDATE facture SET nochantier = :nochantier WHERE societe = :societe and no_id = :no_id;" query = """SELECT * FROM rdf_causes WHERE code=:code;"""
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nochantier': nochantier}) results = request.dbsession.execute(query, {'code': code}).first()
return results
def delete_rdf_cause(request, old_code):
query = "DELETE FROM rdf_causes WHERE code = :old_code;"
execute_query(request, query, {'old_code': old_code})
def update_rdf_cause(request, old_code, code, libelle):
if old_code == '0':
query = "INSERT rdf_causes (code, libelle) values (:code, :libelle);"
else:
query = "UPDATE rdf_causes SET code = :code, libelle = :libelle WHERE code = :old_code;"
execute_query(request, query, {'old_code': old_code, 'code': code, 'libelle': libelle})

View File

@@ -2,7 +2,7 @@
from pyramid_layout.panel import panel_config from pyramid_layout.panel import panel_config
from .security import groupfinder from .security import groupfinder
from .models.default import get_member_by_id from .models.default import get_member_info
@panel_config(name='dropdown_menu_panel', renderer='templates/panels/dropdown_menu_panel.pt') @panel_config(name='dropdown_menu_panel', renderer='templates/panels/dropdown_menu_panel.pt')
def dropdown_menu_panel(context, request): def dropdown_menu_panel(context, request):
@@ -10,23 +10,13 @@ def dropdown_menu_panel(context, request):
if logged_in is None: if logged_in is None:
return { 'logged_in': '' } return { 'logged_in': '' }
else: else:
member = get_member_by_id(request, logged_in) member_info = get_member_info(request, logged_in)
fullname = member.NOM
email = member.email
if member.access == 9:
logged_in_fonction = 'Administrateur'
elif member.access == 8:
logged_in_fonction = 'Comptabilité'
elif member.access == 5:
logged_in_fonction = 'Gestion'
else:
logged_in_fonction = 'Production'
return { return {
'logged_in': logged_in, 'logged_in': logged_in,
'logged_in_name': fullname, 'logged_in_name': member_info['nom'],
'logged_in_email': email, 'logged_in_email': member_info['email'],
'logged_in_fonction': logged_in_fonction, 'logged_in_fonction': member_info['fonction'],
} }

View File

@@ -11,20 +11,24 @@ def includeme(config):
config.add_route('login', '/login') config.add_route('login', '/login')
config.add_route('logout', '/logout') config.add_route('logout', '/logout')
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}') config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
# dossier # dossier
config.add_route('devis_view', '/devis_view/{nodossier}')
config.add_route('dossier_edit', '/dossier_edit/{nodossier}') config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
config.add_route('dossier_lookup', '/chantier_lookup') config.add_route('dossier_lookup', '/chantier_lookup')
config.add_route('dossier_select', '/dossier_select/{date}') config.add_route('dossier_select', '/dossier_select/{date}')
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}') config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
config.add_route('dossier_view', '/dossier_view/{nodossier}') config.add_route('dossier_view', '/dossier_view/{nodossier}')
config.add_route('devis_view', '/devis_view/{nodossier}') config.add_route('rdf_edit','/rdf_edit/{nodossier}')
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
config.add_route('upload_doc', '/upload_doc/{nodossier}') config.add_route('upload_doc', '/upload_doc/{nodossier}')
# parametres # parametres
config.add_route('parametres', '/parametres') config.add_route('parametres', '/parametres')
config.add_route('connecter_a', '/connecter_a/{login}')
config.add_route('dashboard', '/dashboard') config.add_route('dashboard', '/dashboard')
config.add_route('last_emailing', '/last_emailing') config.add_route('last_emailing', '/last_emailing')
config.add_route('orphans_de', '/orphans_de/{societe}') config.add_route('orphans_de', '/orphans_de/{societe}')
config.add_route('rdf_cause_edit', '/rdf_cause_edit/{code}')
config.add_route('rdf_causes_list', '/rdf_causes_list')
config.add_route('user_edit', '/user_edit/{cd_uti}') config.add_route('user_edit', '/user_edit/{cd_uti}')
config.add_route('users_list', '/users_list') config.add_route('users_list', '/users_list')
config.add_route('users_ua', '/users_ua') config.add_route('users_ua', '/users_ua')

View File

@@ -5,7 +5,9 @@ def groupfinder(userid, request):
if member: if member:
# Roles administrateur ? # Roles administrateur ?
if member.access == 9: if member.access <= 1:
return ['group:commerciaux']
elif member.access == 9:
return ['group:administrators'] return ['group:administrators']
else: else:
return [] # it means that userid is logged in (it returns None if userid isn't logged in) return [] # it means that userid is logged in (it returns None if userid isn't logged in)

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-sm-4"> <div class="col-sm-4">
<select class="form-control" id="agenda" name="agenda" onChange="$('#frm').submit()"> <select class="form-control" id="agenda" name="agenda" onChange="$('#frm').submit()" tal:condition="isCommercial==False">
<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

@@ -60,8 +60,6 @@
<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()">
<span class="glyphicon glyphicon-remove"></span> Supprimer</button> <span class="glyphicon glyphicon-remove"></span> Supprimer</button>
<a class="btn btn-warning" href="${request.route_url('dossier_view', nodossier=nodossier)}">
<span class="glyphicon glyphicon-folder-open"></span> Dossier</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -109,8 +109,8 @@
</tr> </tr>
</table> </table>
<!-- PANEL SUIVI -->
<div class="panel-group" id="accordion"> <div class="panel-group" id="accordion">
<!-- PANEL SUIVI -->
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h4 class="panel-title"> <h4 class="panel-title">
@@ -165,7 +165,44 @@
</div> </div>
</div> </div>
</div> </div>
<!-- PANEL DOCUMENTS -->
<!-- PANEL RDF -->
<div class="panel panel-default" tal:condition="nodossier.startswith('PL')">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#panel-documents">
<span class="glyphicon glyphicon-plus"></span>&nbsp;RECHERCHE DE FUITE</a>
</h4>
</div>
<div id="panel-documents" class="panel-collapse collapse">
<div class="panel-body">
<p>
<a class="btn btn-success" role="button" href="${request.route_url('rdf_edit', nodossier=nodossier)}">
<span class="glyphicon glyphicon-plus"></span> Nouvelle recherche</a>
</p>
<table class="table table-bordered table-condensed" tal:condition="rapport">
<tr>
<th>Numéro</th>
<th>Date</th>
<th>Chantier</th>
<th>No sinistre</th>
<th>Modif le</th>
</tr>
<tr>
<td>
<a href="/rdf_edit/${nodossier}">${rapport.nochantier}</a>
</td>
<td>${rapport.DATE.strftime('%d-%m-%Y')}</td>
<td>${rapport.C_QUALITE} ${rapport.C_NOM}</td>
<td>${rapport.NOSIN}</td>
<td>${rapport.modif_le.strftime('%d-%m-%Y')}</td>
</tr>
</table>
</div>
</div>
</div>
<!-- PANEL DOCUMENTS -->
<div class="panel panel-default" tal:condition="documents"> <div class="panel panel-default" tal:condition="documents">
<div class="panel-heading"> <div class="panel-heading">
<h4 class="panel-title"> <h4 class="panel-title">
@@ -198,7 +235,7 @@
</div> </div>
<!-- PANEL DOCS ATTACHES --> <!-- PANEL DOCS ATTACHES -->
<div class="panel panel-default" tal:condition="docs_attaches"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h4 class="panel-title"> <h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#panel-attaches"> <a data-toggle="collapse" data-parent="#accordion" href="#panel-attaches">
@@ -208,8 +245,8 @@
<div id="panel-attaches" class="panel-collapse collapse"> <div id="panel-attaches" class="panel-collapse collapse">
<div class="panel-body"> <div class="panel-body">
<p> <p>
<a href="${request.application_url}/upload_doc/${nodossier}" class="btn btn-primary" role="button"> <a href="${request.application_url}/upload_doc/${nodossier}" class="btn btn-success" role="button">
<span class="glyphicon glyphicon-cloud-upload"></span>&nbsp;Télécharger un document</a> <span class="glyphicon glyphicon-cloud-upload"></span>&nbsp;Ajouter un document</a>
</p> </p>
<ul> <ul>
<div tal:repeat="detail docs_attaches"> <div tal:repeat="detail docs_attaches">

View File

@@ -0,0 +1,124 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<br />
<!-- ENTETE -->
<div class="row">
<h4>ADRESSE d'INTERVENTION</h4>
<table class="table table-condensed ">
<tr>
<td>
<p>
<h4>${rapport.C_QUALITE} ${rapport.C_NOM}</h4>
${rapport.C_ADR}<br />
<span tal:condition="rapport.C_ADR2">${rapport.C_ADR2}<br /></span>
${rapport.C_CP} ${rapport.C_VILLE}<br />
</p>
</td>
<td>
<p>
Assureur : <b>${rapport.NOMCLI}</b><br />
No Sinistre : ${rapport.NOSIN}
<br />
Etage : ${rapport.C_ETAGE}<br />
Téléphone : ${rapport.C_TEL1}<br />
Mobile: ${rapport.C_TELP}<br />
</p>
</td>
</tr>
</table>
</div> <!-- row -->
<div class="row">
<form id="rdv_edit-form" action="${url}" method="post"
data-fv-framework="bootstrap"
data-fv-icon-valid="glyphicon glyphicon-ok"
data-fv-icon-invalid="glyphicon glyphicon-remove"
data-fv-icon-validating="glyphicon glyphicon-refresh">
<div class="form-group">
<label class="control-label" for="comment">Caractéristique du risque sinistré :</label>
<select class="form-control" id="caracteristique" name="caracteristique">
<div tal:repeat="item caracteristiques">
<option value="${item}" tal:attributes="selected str(rapport.caracteristique)==item[0] and 'selected' or None">${item}</option>
</div>
</select>
</div>
<h4 class="text-center">ANALYSE</h4>
<div class="form-group">
<label class="control-label" for="equipement">Les dommages sont-ils causés par un bien d'équipement ?</label>
<select class="form-control" id="equipement" name="equipement">
<div tal:repeat="item equipements">
<option value="${item.libelle}" tal:attributes="selected str(rapport.equipement)==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<div class="form-group">
<label class="control-label" for="reseau_int">Les dommages sont-ils causés par un bien d'équipement ?</label>
<select class="form-control" id="reseau_int" name="reseau_int">
<div tal:repeat="item reseaux_int">
<option value="${item.libelle}" tal:attributes="selected str(rapport.reseau_int)==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<h4 class="text-center">TRAVAUX relatifs à la DETECTION de la fuite</h4>
<div class="form-group">
<label class="control-label" for="descr_detect">Descriptif détection</label>
<textarea class="form-control" rows="6" cols="40" id="descr_detect" name="descr_detect"
data-fv-stringlength="true"
data-fv-stringlength-max="2000"
data-fv-stringlength-message="2000 caractères maximum">${rapport.descr_detect}
</textarea>
</div>
<h4 class="text-center">TRAVAUX relatifs à la REPARATION de la fuite</h4>
<div class="form-group">
<label class="control-label" for="descr_repar">Descriptif réparation</label>
<textarea class="form-control" rows="6" cols="40" id="descr_repar" name="descr_repar"
data-fv-stringlength="true"
data-fv-stringlength-max="2000"
data-fv-stringlength-message="2000 caractères maximum">${rapport.descr_repar}
</textarea>
</div>
<h4 class="text-center">PHOTOS</h4>
<p>
<a href="${request.application_url}/upload_doc/${nodossier}" class="btn btn-success" role="button">
<span class="glyphicon glyphicon-cloud-upload"></span>&nbsp;Ajouter une photo</a>
</p>
<h4 class="text-center">CONCLUSIONS</h4>
<div class="form-group">
<label class="control-label" for="conclusions">Conclusions</label>
<textarea class="form-control" rows="6" cols="40" id="conclusions" name="conclusions"
data-fv-stringlength="true"
data-fv-stringlength-max="2000"
data-fv-stringlength-message="2000 caractères maximum">${rapport.conclusions}
</textarea>
</div>
<div class="form-group">
<label class="control-label">Dern. modif le</label>
<div>
<p class="form-control-static">${rapport.modif_le.strftime('%d-%m-%Y %H:%M')} par ${rapport.USERMAJ}</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
<div class="form-group">
<a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}">
<span class="glyphicon glyphicon-arrow-left"></span> Annuler</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
</div>
</div>
</div>
</form>
</div> <!-- row -->
<br />
<br />
<br />
</div>
</metal:block>

View File

@@ -62,7 +62,7 @@
<div class="collapse navbar-collapse" id="myNavbar" tal:condition="not layout.isAnonymous()"> <div class="collapse navbar-collapse" id="myNavbar" tal:condition="not layout.isAnonymous()">
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li> <li>
<a href="${request.application_url}"><span class="glyphicon glyphicon-home"></span>&nbsp;Accueil</a></li> <a href="${request.application_url}/chantier_lookup"><span class="glyphicon glyphicon-search"></span>&nbsp;Recherche</a></li>
<li tal:condition="layout.isAdmin()"> <li tal:condition="layout.isAdmin()">
<a href="${request.application_url}/parametres"><span class="glyphicon glyphicon-cog"></span>Paramètres</a></li> <a href="${request.application_url}/parametres"><span class="glyphicon glyphicon-cog"></span>Paramètres</a></li>
${panel('dropdown_menu_panel')} ${panel('dropdown_menu_panel')}

View File

@@ -7,6 +7,13 @@
<a href="${request.application_url}/users_list"><span class="glyphicon glyphicon-user logo-primary"></span></a> <a href="${request.application_url}/users_list"><span class="glyphicon glyphicon-user logo-primary"></span></a>
<h4>UTILISATEURS</h4> <h4>UTILISATEURS</h4>
</div> </div>
<div class="col-sm-3">
<a href="${request.application_url}/rdf_causes_list"><span class="glyphicon glyphicon-tint logo-primary"></span></a>
<h4>RDF : CAUSES</h4>
</div>
</div>
<br />
<div class="row text-center">
<div class="col-sm-3"> <div class="col-sm-3">
<a href="${request.application_url}/users_ua"><span class="glyphicon glyphicon-log-in logo-primary"></span></a> <a href="${request.application_url}/users_ua"><span class="glyphicon glyphicon-log-in logo-primary"></span></a>
<h4>CONNEXIONS</h4> <h4>CONNEXIONS</h4>

View File

@@ -0,0 +1,72 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
<br />
<div class="row">
<form id="rdv_edit-form" class="form-horizontal" action="${url}" method="post"
data-fv-framework="bootstrap"
data-fv-icon-valid="glyphicon glyphicon-ok"
data-fv-icon-invalid="glyphicon glyphicon-remove"
data-fv-icon-validating="glyphicon glyphicon-refresh">
<div class="form-group">
<label class="control-label col-sm-3" for="code">Code</label>
<div class="col-sm-9">
<input class="form-control" type="text" id="code" name="code" value="${cause.code}"
placeholder="5 caractères : Cxxyy"
data-fv-notempty="true"
data-fv-notempty-message="Un code est obligatoire"
data-fv-stringlength="true"
data-fv-stringlength-max="5"
data-fv-stringlength-min="5"
data-fv-stringlength-message="5 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-3" for="libelle">Libellé</label>
<div class="col-sm-9">
<input class="form-control" type="text" id="libelle" name="libelle" value="${cause.libelle}"
placeholder="150 caractères maximum"
data-fv-notempty="true"
data-fv-notempty-message="Un libellé est obligatoire"
data-fv-stringlength="true"
data-fv-stringlength-max="150"
data-fv-stringlength-message="150 caractères maximum" />
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-3">Dern. modif le</label>
<div class="col-sm-9">
<p class="form-control-static">${cause.modif_le.strftime('%d-%m-%Y %H:%M')}</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
<a class="btn btn-default" href="${request.route_url('rdf_causes_list')">
<span class="glyphicon glyphicon-arrow-left"></span> Annuler</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
<button class="btn btn-danger" type="submit" name="form.deleted" tal:condition="old_code != '0'">
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
</div>
</div>
</form>
<br />
<br />
<br />
</div> <!-- row -->
<script>
$(document).ready(function() {
$('#rdv_edit-form').formValidation();
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
});
</script>
</div>
</metal:block>

View File

@@ -0,0 +1,52 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<p>
<a href="${request.application_url}/parametres" class="btn btn-default" role="button">
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
<a href="${request.application_url}/rdf_cause_edit/0" class="btn btn-success" role="button">
<span class="glyphicon glyphicon-plus"></span> Nouvelle cause</a>
</p>
<table id="rdf_causes_list" class="table table-striped table-bordered">
<thead>
<tr>
<th>Code</th>
<th>Libelle de la cause</th>
<th>Modif le</th>
</tr>
</thead>
</table>
<br />
<br />
<script type="text/javascript">
var dataSet = ${dt_data};
$(document).ready(function() {
$.fn.dataTable.moment('DD/MM/YYYY - HH:mm');
$('#rdf_causes_list').DataTable({
data: dataSet,
pageLength: 50,
bLengthChange: false,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json'
},
columnDefs: [
{ "targets": 0,
"render": function (data, type, full, meta) {
// ajouter un link vers le formulaire
return '<a href="/rdf_cause_edit/' + data + '">' + data + '</a>';
},
},
]
});
});
</script>
</div><!-- content -->
</metal:block>

View File

@@ -15,7 +15,7 @@
<th>Nom, Prénom</th> <th>Nom, Prénom</th>
<th>Email</th> <th>Email</th>
<th>Agenda</th> <th>Agenda</th>
<th>Rôle</th> <th>Fonction</th>
<th>Etat</th> <th>Etat</th>
</tr> </tr>
</thead> </thead>
@@ -52,7 +52,13 @@
return ''; return '';
} }
}, },
} },
{ "targets": 4,
"render": function (data, type, row, meta) {
// ajouter un link vers le login
return '<a href="/connecter_a/' + row[0] + '">' + data + '</a>';
},
},
] ]
}); });

View File

@@ -16,10 +16,9 @@ from datetime import *
import hashlib import hashlib
from sqlalchemy.exc import DBAPIError from sqlalchemy.exc import DBAPIError
from ..security import groupfinder
import json import json
from ..models.default import *
from ..models.agenda import * from ..models.agenda import *
from ..models.dossier import * from ..models.dossier import *
@@ -92,7 +91,7 @@ def agenda(request):
message = '' message = ''
# récupérer les paramètres de l'appel de la view # récupérer les paramètres de l'appel de la view
datePlan = request.matchdict['date'] datePlan = request.matchdict['date']
logged_in = request.authenticated_userid logged_in = request.authenticated_userid.upper()
if datePlan == 'today': if datePlan == 'today':
datePlan = date.today().strftime('%Y-%m-%d') datePlan = date.today().strftime('%Y-%m-%d')
@@ -114,12 +113,14 @@ def agenda(request):
# liste des users avec agenda # liste des users avec agenda
agendas = get_users_agenda(request, '') agendas = get_users_agenda(request, '')
# le user a-t-il un agenda ? # le user est-il un commercial ?
agenda = 'JMD' member = get_member_info(request, logged_in)
for item in agendas: if member['fonction'] == 'Commercial':
if item.CD_UTI == logged_in.upper(): agenda = logged_in
agenda = item.CD_UTI isCommercial = True
else:
agenda = 'S'
isCommercial = False
# prendre en compte les paramètres de saisie # prendre en compte les paramètres de saisie
if 'agenda' in request.params: if 'agenda' in request.params:
@@ -160,16 +161,17 @@ def agenda(request):
'allDay': False, 'allDay': False,
'color': color, 'color': color,
'textColor': 'Black', 'textColor': 'Black',
'url': '/rdv_edit/%s/%s' % (row.nodossier, row.nolig), 'url': '/dossier_view/%s' % (row.nodossier),
} }
events.append(json_event) events.append(json_event)
return { return {
'page_title': 'Agenda', 'page_title': 'Agenda de %s' % agenda,
'fullcalendar_events': json.dumps(events), 'fullcalendar_events': json.dumps(events),
'agendas': agendas, 'agendas': agendas,
'agenda': agenda, 'agenda': agenda,
'isCommercial': isCommercial,
'types_rdv': types_rdv, 'types_rdv': types_rdv,
'type_rdv': type_rdv, 'type_rdv': type_rdv,
'message': message, 'message': message,

View File

@@ -173,8 +173,8 @@ def login(request):
referrer = '/' # never use the login form itself as came_from referrer = '/' # never use the login form itself as came_from
came_from = request.params.get('came_from', referrer) came_from = request.params.get('came_from', referrer)
password = u'' password = ''
message = u'' message = ''
if 'form.submitted' in request.params: if 'form.submitted' in request.params:
login = request.params['login'] login = request.params['login']
password = request.params['password'] password = request.params['password']

View File

@@ -85,6 +85,7 @@ def dossier_lookup(request):
def dossier_view(request): def dossier_view(request):
nodossier = request.matchdict['nodossier'] nodossier = request.matchdict['nodossier']
societe = nodossier[0:2] societe = nodossier[0:2]
logged_in = request.authenticated_userid.upper()
url = request.route_url("dossier_view", nodossier=nodossier) url = request.route_url("dossier_view", nodossier=nodossier)
@@ -100,6 +101,9 @@ def dossier_view(request):
similaires = get_similaires_byChantier(request, dossier.societe, dossier.C_NOM, dossier.C_ADR, dossier.C_CP, dossier.C_VILLE) similaires = get_similaires_byChantier(request, dossier.societe, dossier.C_NOM, dossier.C_ADR, dossier.C_CP, dossier.C_VILLE)
# lire tous les documents attachés # lire tous les documents attachés
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier) docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
if nodossier.startswith('PL'):
# lire rapport de rdf
rapport = get_rapport_by_no(request, nodossier)
# select background color according to society # select background color according to society
bg_color = "bg-%s" % societe bg_color = "bg-%s" % societe
@@ -108,6 +112,7 @@ def dossier_view(request):
'nodossier': nodossier, 'nodossier': nodossier,
'dossier': dossier, 'dossier': dossier,
'details': details, 'details': details,
'rapport': rapport,
'documents': documents, 'documents': documents,
'similaires': similaires, 'similaires': similaires,
'docs_attaches': docs_attaches, 'docs_attaches': docs_attaches,
@@ -167,7 +172,7 @@ def dossier_selected(request):
@view_config(route_name='suivi_edit', renderer='../templates/dossier/suivi_edit.pt', permission='view') @view_config(route_name='suivi_edit', renderer='../templates/dossier/suivi_edit.pt', permission='view')
def suivi_edit(request): def suivi_edit(request):
logged_in = request.authenticated_userid logged_in = request.authenticated_userid.upper()
nodossier = request.matchdict['nodossier'] nodossier = request.matchdict['nodossier']
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)
@@ -177,7 +182,7 @@ def suivi_edit(request):
# nouveau # nouveau
suivi = {} suivi = {}
suivi['COMMENT'] = '' suivi['COMMENT'] = ''
suivi['USERMAJ'] = logged_in.upper() suivi['USERMAJ'] = logged_in
suivi['DATEMAJ'] = datetime.now() suivi['DATEMAJ'] = datetime.now()
page_title= 'Nouveau suivi' page_title= 'Nouveau suivi'
else: else:
@@ -196,7 +201,7 @@ def suivi_edit(request):
new_values[param] = request.params[param] new_values[param] = request.params[param]
if new_values: if new_values:
new_values['USERMAJ'] = logged_in.upper() new_values['USERMAJ'] = logged_in
new_values['DATE'] = date.today() new_values['DATE'] = date.today()
update_suivi(request, nodossier, nolig, new_values) update_suivi(request, nodossier, nolig, new_values)
@@ -250,7 +255,7 @@ def dossier_edit(request):
@view_config(route_name='upload_doc', renderer='../templates/dossier/upload_doc.pt', permission='view') @view_config(route_name='upload_doc', renderer='../templates/dossier/upload_doc.pt', permission='view')
def upload_doc(request): def upload_doc(request):
logged_in = request.authenticated_userid logged_in = request.authenticated_userid.upper()
nodossier = request.matchdict['nodossier'] nodossier = request.matchdict['nodossier']
societe = nodossier[0:2] societe = nodossier[0:2]
nochantier = nodossier[3:] nochantier = nodossier[3:]
@@ -300,7 +305,7 @@ def upload_doc(request):
# Now that we know the file has been fully saved to disk move it into place. # Now that we know the file has been fully saved to disk move it into place.
os.rename(temp_file_path, file_path) os.rename(temp_file_path, file_path)
insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in.upper()) insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in)
request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success') request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success')
# lire tous les documents attachés # lire tous les documents attachés
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier) docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
@@ -314,3 +319,43 @@ def upload_doc(request):
'docs_url': request.static_url(request.registry.settings['mondumas.devfac_url']), 'docs_url': request.static_url(request.registry.settings['mondumas.devfac_url']),
} }
@view_config(route_name='rdf_edit', renderer='../templates/dossier/rdf_edit.pt', permission='view')
def rdf_edit(request):
logged_in = request.authenticated_userid.upper()
nodossier = request.matchdict['nodossier']
url = request.route_url('rdf_edit', nodossier=nodossier)
# lire le rapport
rapport = get_rapport_by_no(request, nodossier)
if rapport == None:
# si non trouvé, creer un nouveau rapport
insert_rapport(request, nodossier, logged_in)
# lire le rapport
rapport = get_rapport_by_no(request, nodossier)
caracteristiques = ["Maison individuelle", "Immeuble collectif", u"Copropriété", "Commerce", "Bureaux"]
equipements = get_rdf_causes(request, 'C01')
reseaux_int = get_rdf_causes(request, 'C02')
if 'form.submitted' in request.params:
new_values = {}
for param, db_value in rapport.items():
if param in request.params and request.params[param] != db_value:
new_values[param] = request.params[param]
if new_values:
update_rdf(request, nodossier, new_values)
request.session.flash(u"Le dossier a été mis à jour avec succès.", 'success')
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
return {
'page_title': u"Modifier le rapport de RDF : %s" % nodossier,
'url': url,
'logged_in': logged_in,
'rapport': rapport,
'nodossier': nodossier,
'caracteristiques': caracteristiques,
'equipements': equipements,
'reseaux_int': reseaux_int,
}

View File

@@ -1,239 +1,312 @@
# -*- coding: utf8 -*- # -*- coding: utf8 -*-
from pyramid.response import Response from pyramid.response import Response
from pyramid.renderers import render, get_renderer from pyramid.renderers import render, get_renderer
from pyramid.view import ( from pyramid.view import (
view_config, view_config,
forbidden_view_config, forbidden_view_config,
) )
from pyramid.httpexceptions import ( from pyramid.httpexceptions import (
HTTPFound, HTTPFound,
HTTPNotFound, HTTPNotFound,
HTTPForbidden, HTTPForbidden,
) )
from pyramid_mailer.message import Message, Attachment from pyramid_mailer.message import Message, Attachment
from datetime import * from datetime import *
import hashlib import hashlib
from sqlalchemy.exc import DBAPIError from sqlalchemy.exc import DBAPIError
from ..security import groupfinder from ..security import groupfinder
import json import json
from ..models.parametres import * from ..models.parametres import *
from ..models.default import * from ..models.default import *
from ..views.default import * from ..views.default import *
@view_config(route_name='parametres', renderer='../templates/parametres/parametres.pt', permission='manage') @view_config(route_name='parametres', renderer='../templates/parametres/parametres.pt', permission='manage')
def parametres(request): def parametres(request):
logged_in = request.authenticated_userid.lower() logged_in = request.authenticated_userid.lower()
return { return {
'page_title': u"Paramètres", 'page_title': u"Paramètres",
'logged_in': logged_in, 'logged_in': logged_in,
} }
@view_config(route_name='users_list', renderer='../templates/parametres/users_list.pt', permission='manage') @view_config(route_name='users_list', renderer='../templates/parametres/users_list.pt', permission='manage')
def users_list(request): def users_list(request):
# lire les utilisateurs # lire les utilisateurs
items = get_member_by_id(request, '0') items = get_member_by_id(request, '0')
# construire la liste # construire la liste
liste=[] liste=[]
for item in items: for item in items:
if item.actif == 0: if item.actif == 0:
etat = 'Inactif' etat = 'Inactif'
else: else:
etat = '' etat = ''
if item.access == 0: if item.access == 0:
role = '' role = 'Commercial'
elif item.access == 8: elif item.access == 8:
role = 'Compta' role = 'Compta'
elif item.access == 9: elif item.access == 9:
role = 'Admin' role = 'Admin'
else: else:
role = 'Gestion' role = 'Gestion'
d = (item.CD_UTI, item.NOM, item.email, item.agenda, role, etat) d = (item.CD_UTI, item.NOM, item.email, item.agenda, role, etat)
liste.append(d) liste.append(d)
return { return {
'page_title': u'Liste des utilisateurs', 'page_title': u'Liste des utilisateurs',
'dt_data': json.dumps(liste), 'dt_data': json.dumps(liste),
} }
@view_config(route_name='users_ua', renderer='../templates/parametres/users_ua.pt', permission='manage') @view_config(route_name='users_ua', renderer='../templates/parametres/users_ua.pt', permission='manage')
def users_ua(request): def users_ua(request):
# lire les utilisateurs # lire les utilisateurs
items = get_member_by_id(request, '0') items = get_member_by_id(request, '0')
# construire la liste # construire la liste
liste=[] liste=[]
for item in items: for item in items:
# utilisateur a au moins une connexion ? # utilisateur a au moins une connexion ?
if item.dern_cnx_le: if item.dern_cnx_le:
der_cnx_le = item.dern_cnx_le.strftime('%d/%m/%Y - %H:%M') 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) d = (der_cnx_le, item.CD_UTI, item.NOM, item.ua_string)
liste.append(d) liste.append(d)
return { return {
'page_title': u'Liste des connexions', 'page_title': u'Liste des connexions',
'dt_data': json.dumps(liste), 'dt_data': json.dumps(liste),
} }
@view_config(route_name='connecter_a', permission='manage')
def connecter_a(request):
@view_config(route_name='user_edit', renderer='../templates/parametres/user_edit.pt', permission='manage') # paramètre fourni ?
def user_edit(request): login = request.matchdict["login"]
cd_uti = request.matchdict['cd_uti'] if len(login) > 0:
url = request.route_url('user_edit', cd_uti=cd_uti) request.session.invalidate()
message = '' headers = forget(request)
access = ["0 | Production", "5 | Gestion", u"8 | Comptabilité", "9 | Administration"] headers = remember(request, login)
return HTTPFound(location="/", headers=headers)
if cd_uti == '0': else:
# nouveau return HTTPFound(location="/")
individu = {}
individu['CD_UTI'] = '0'
individu['NOM'] = ''
individu['email'] = '' @view_config(route_name='user_edit', renderer='../templates/parametres/user_edit.pt', permission='manage')
individu['access'] = '0 | Production' def user_edit(request):
individu['actif'] = 1 cd_uti = request.matchdict['cd_uti']
individu['agenda'] = 0 url = request.route_url('user_edit', cd_uti=cd_uti)
page_title= 'Nouvelle Fiche' message = ''
else: access = ["0 | Production", "5 | Gestion", u"8 | Comptabilité", "9 | Administration"]
# lire la fiche de l'individu
individu = get_member_by_id(request, cd_uti) if cd_uti == '0':
if not individu: # nouveau
request.session.flash(u"Utilisateur non trouvé : %s" % cd_uti, 'warning') individu = {}
return HTTPFound(location=request.route_url('users_list')) individu['CD_UTI'] = '0'
page_title= u"Fiche de %s" %(individu.NOM) individu['NOM'] = ''
individu['email'] = ''
if 'form.submitted' in request.params: individu['access'] = '0 | Production'
new_values = {} individu['actif'] = 1
for param, db_value in individu.items(): individu['agenda'] = 0
if param in request.params and request.params[param] != db_value: page_title= 'Nouvelle Fiche'
new_values[param] = request.params[param] else:
# lire la fiche de l'individu
# actif coché ? individu = get_member_by_id(request, cd_uti)
if 'actif' in request.params: if not individu:
new_values['actif'] = 1 request.session.flash(u"Utilisateur non trouvé : %s" % cd_uti, 'warning')
else: return HTTPFound(location=request.route_url('users_list'))
new_values['actif'] = 0 page_title= u"Fiche de %s" %(individu.NOM)
# agenda coché ?
if 'agenda' in request.params: if 'form.submitted' in request.params:
new_values['agenda'] = 1 new_values = {}
else: for param, db_value in individu.items():
new_values['agenda'] = 0 if param in request.params and request.params[param] != db_value:
new_values[param] = request.params[param]
if new_values:
update_membre(request, cd_uti, new_values) # actif coché ?
request.session.flash(u"La fiche a été mise à jour avec succès.", 'success') if 'actif' in request.params:
return HTTPFound(location=request.route_url('users_list')) new_values['actif'] = 1
else:
if 'form.deleted' in request.params: new_values['actif'] = 0
delete_membre(request, cd_uti) # agenda coché ?
request.session.flash(u"La fiche a été supprimée avec succès.", 'success') if 'agenda' in request.params:
return HTTPFound(location=request.route_url('users_list')) new_values['agenda'] = 1
else:
return { new_values['agenda'] = 0
'page_title': page_title,
'url': url, if new_values:
'individu': individu, update_membre(request, cd_uti, new_values)
'access': access, request.session.flash(u"La fiche a été mise à jour avec succès.", 'success')
'message': message, return HTTPFound(location=request.route_url('users_list'))
}
if 'form.deleted' in request.params:
@view_config(route_name='dashboard', renderer='../templates/parametres/dashboard.pt', permission='manage') delete_membre(request, cd_uti)
def dashboard(request): request.session.flash(u"La fiche a été supprimée avec succès.", 'success')
return HTTPFound(location=request.route_url('users_list'))
# lire le log de nuit
log_nuit = get_log_nuit(request) return {
'page_title': page_title,
return { 'url': url,
'page_title': u"Tableau de bord", 'individu': individu,
'log_nuit': log_nuit, 'access': access,
} 'message': message,
}
@view_config(route_name='last_emailing', renderer='../templates/parametres/last_emailing.pt', permission='manage')
def last_emailing(request): @view_config(route_name='dashboard', renderer='../templates/parametres/dashboard.pt', permission='manage')
def dashboard(request):
items = get_last_emailing(request)
# lire le log de nuit
# construire la liste log_nuit = get_log_nuit(request)
liste=[]
for item in items: return {
if item.rdv_date: 'page_title': u"Tableau de bord",
resa_date = item.rdv_date.strftime('%d-%m-%Y') 'log_nuit': log_nuit,
else: }
resa_date = ""
@view_config(route_name='last_emailing', renderer='../templates/parametres/last_emailing.pt', permission='manage')
if item.envoye_le: def last_emailing(request):
envoye_le = item.envoye_le.strftime('%d-%m-%Y %H:%M')
else: items = get_last_emailing(request)
envoye_le = ""
# construire la liste
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=[]
liste.append(d) for item in items:
if item.rdv_date:
return { resa_date = item.rdv_date.strftime('%d-%m-%Y')
'page_title': u'Liste des derniers emailing', else:
'dt_data': json.dumps(liste), resa_date = ""
}
if item.envoye_le:
@view_config(route_name='orphans_de', renderer='../templates/parametres/orphans_de.pt', permission='manage') envoye_le = item.envoye_le.strftime('%d-%m-%Y %H:%M')
def orphans_de(request): else:
envoye_le = ""
societe = request.matchdict['societe']
url = request.route_url('orphans_de', societe=societe) 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'))
message = u'' liste.append(d)
societes = ['PE','ME','PL','PO','CD']
nochantier = '0' return {
'page_title': u'Liste des derniers emailing',
# prendre en compte les paramètres de saisie 'dt_data': json.dumps(liste),
if 'societe' in request.params: }
societe = request.params["societe"]
url = request.route_url('orphans_de', societe=societe) @view_config(route_name='orphans_de', renderer='../templates/parametres/orphans_de.pt', permission='manage')
def orphans_de(request):
if 'form.nochantier' in request.params:
message = '' societe = request.matchdict['societe']
nochantier = request.params['nochantier'] url = request.route_url('orphans_de', societe=societe)
message = u''
# oui, NestedMultiDict([('form.submitted', u''), ('id0', u'271246'), ('id1', u'370929')]) societes = ['PE','ME','PL','PO','CD']
for param in request.params: nochantier = '0'
if param[:2] == 'id':
update_nochantier(request, societe, request.params[param], int(nochantier)) # prendre en compte les paramètres de saisie
message = u"Le numéro de chantier est mis à jour avec succès" if 'societe' in request.params:
societe = request.params["societe"]
# lire le premier devis orphelin url = request.route_url('orphans_de', societe=societe)
devis = get_orphans_DE(request, societe)
if 'form.nochantier' in request.params:
# lire tous les dossiers de ce chantier message = ''
dossiers = get_dossiers_byChantier(request, societe, '%s;%s;%s' % (devis.C_NOM, devis.C_ADR, devis.C_VILLE)) nochantier = request.params['nochantier']
liste=[]
nochantiers=[] # oui, NestedMultiDict([('form.submitted', u''), ('id0', u'271246'), ('id1', u'370929')])
# construire la liste for param in request.params:
for item in dossiers: if param[:2] == 'id':
dossier_id = '%s-%s' % (item.TYPE, item.numero) update_nochantier(request, societe, request.params[param], int(nochantier))
if item.nochantier != 0: message = u"Le numéro de chantier est mis à jour avec succès"
nochantiers.append(item.nochantier)
nochantier = item.nochantier # lire le premier devis orphelin
d = (dossier_id, dossier_id, item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant), devis = get_orphans_DE(request, societe)
item.nosin, item.nochantier)
liste.append(d) # 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))
if len(nochantiers) == 0: liste=[]
nochantiers.append(1) nochantiers=[]
# construire la liste
return { for item in dossiers:
'page_title': u"DEVIS orphelins", dossier_id = '%s-%s' % (item.TYPE, item.numero)
'url': url, if item.nochantier != 0:
'message': message, nochantiers.append(item.nochantier)
'devis': devis, nochantier = item.nochantier
'dt_data': json.dumps(liste), d = (dossier_id, dossier_id, item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant),
'societes': societes, item.nosin, item.nochantier)
'societe': societe, liste.append(d)
'nochantiers': nochantiers,
'nochantier': nochantier, 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,