ajout cabinet+experts
This commit is contained in:
@@ -26,11 +26,6 @@ def get_userAccess(request, logged_in):
|
||||
else:
|
||||
return 0
|
||||
|
||||
def get_codespostaux(request, code):
|
||||
query = "SELECT * FROM p_codespostaux WHERE code_postal like :code;"
|
||||
results = request.dbsession.execute(query, {'code': code + "%"})
|
||||
return results.fetchall()
|
||||
|
||||
def get_member_by_mdp_oublie(request, lien):
|
||||
query = "SELECT * FROM p_users WHERE mdp_oublie=:lien;"
|
||||
results = request.dbsession.execute(query, {'lien':lien}).first()
|
||||
@@ -128,3 +123,8 @@ def get_article(request, type, libelle):
|
||||
results = request.dbsession.execute(query, {'ref': libelle}).first()
|
||||
return results
|
||||
|
||||
def get_codespostaux(request, codep):
|
||||
query = "SELECT * FROM p_codespostaux WHERE code_postal LIKE :code;"
|
||||
results = request.dbsession.execute(query, {'code': codep+"%"}).fetchall()
|
||||
return results
|
||||
|
||||
|
||||
@@ -44,6 +44,26 @@ def get_dossiers_byChantier(request, societe, name):
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
return results
|
||||
|
||||
def get_cabinets_by_id(request, code):
|
||||
# lire les cabinets
|
||||
if code == '0':
|
||||
query = """SELECT * FROM P_CABINET WHERE afficher <> 0 ORDER BY nom;"""
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
else:
|
||||
query = """SELECT * FROM P_CABINET WHERE code=:code;"""
|
||||
results = request.dbsession.execute(query, {'code': code}).first()
|
||||
return results
|
||||
|
||||
def get_experts_by_id(request, code_cab, code_exp):
|
||||
# lire les experts du cabinet
|
||||
if code_exp == '0':
|
||||
query = """SELECT * FROM P_EXPERTS WHERE code_cab=:code_cab AND en_activite <> 0 ORDER BY nom;"""
|
||||
results = request.dbsession.execute(query, {'code_cab': code_cab}).fetchall()
|
||||
else:
|
||||
query = """SELECT * FROM P_EXPERTS WHERE code_cab=:code_cab AND code_exp=:code_exp;"""
|
||||
results = request.dbsession.execute(query, {'code_cab': code_cab}, {'code_exp': code_exp}).first()
|
||||
return results
|
||||
|
||||
def get_rdf_causes_by_id(request, code):
|
||||
# lire les rdf_causes
|
||||
if code == '0':
|
||||
|
||||
@@ -50,10 +50,13 @@ def includeme(config):
|
||||
config.add_route('parametres', '/parametres')
|
||||
config.add_route('article_edit', '/article_edit/{ref}')
|
||||
config.add_route('articles', '/articles')
|
||||
config.add_route('cabinet_edit', '/cabinet_edit/{code}')
|
||||
config.add_route('cabinets', '/cabinets')
|
||||
config.add_route('connecter_a', '/connecter_a/{login}')
|
||||
config.add_route('dashboard', '/dashboard')
|
||||
config.add_route('emails_msg', '/emails_msg/{nolig}')
|
||||
config.add_route('emails_sent', '/emails_sent')
|
||||
config.add_route('expert_edit', '/expert_edit/{code_cab}/{code_exp}')
|
||||
config.add_route('infrastructure', '/infrastructure')
|
||||
config.add_route('last_emailing', '/last_emailing')
|
||||
config.add_route('orphans_de', '/orphans_de/{societe}')
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">Libellé</label>
|
||||
<label class="control-label col-sm-2">Désignation</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" type="text" id="libelle" name="libelle" value="${ligne.libelle}">
|
||||
<textarea class="form-control monospace-font" rows="3" cols="40" id="libelle" name="libelle">${ligne.libelle}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -81,7 +81,7 @@
|
||||
<div class="col-sm-10">
|
||||
<p class="form-control-static">${ligne.ref}</p>
|
||||
</div>
|
||||
<label class="control-label col-sm-2">Libellé</label>
|
||||
<label class="control-label col-sm-2">Désignation</label>
|
||||
<div class="col-sm-10">
|
||||
<p class="form-control-static">${ligne.libelle}</p>
|
||||
</div>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="code_postal">Code postal</label>
|
||||
<label class="col-xs-3 control-label" for="code_postal">Code postal - Ville</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" id="code_postal" name="code_postal" value="${code_postal}"
|
||||
placeholder="5 caractères maximum"
|
||||
@@ -76,6 +76,15 @@
|
||||
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label">Adresse email 2</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_EMAIL2"
|
||||
value="${dossier.C_EMAIL2}" placeholder="50 caractères maximum"
|
||||
data-fv-emailaddress="true"
|
||||
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label">Téléphone fixe</label>
|
||||
<div class="col-xs-5">
|
||||
@@ -152,6 +161,8 @@
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<div metal:fill-slot="additional_scripts">
|
||||
<!-- autocomplete plugin -->
|
||||
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet">
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script>
|
||||
@@ -177,6 +188,6 @@ $(document).ready(function() {
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
@@ -28,18 +28,16 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Nom ou numéro du chantier</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="col-sm-7 input-group">
|
||||
<input type="text" class="form-control" name="name" value="${name}"
|
||||
placeholder="Le nom ou le numéro doit avoir de 2 à 30 caractères de long" >
|
||||
<div class="input-group-btn">
|
||||
<button id="submitButton" class="btn btn-primary" type="submit" name="form.submitted">
|
||||
<i class="glyphicon glyphicon-search"></i> Rechercher</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-4 col-sm-8">
|
||||
<button id="submitButton" class="btn btn-primary" type="submit" name="form.submitted">
|
||||
<span class="glyphicon glyphicon-search"></span> Rechercher</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div><!-- row -->
|
||||
@@ -101,15 +99,6 @@
|
||||
});
|
||||
|
||||
});
|
||||
$('#site-search-form').formValidation({
|
||||
framework: 'bootstrap',
|
||||
message: 'This value is not valid',
|
||||
icon: {
|
||||
valid: 'glyphicon glyphicon-ok',
|
||||
invalid: 'glyphicon glyphicon-remove',
|
||||
validating: 'glyphicon glyphicon-refresh'
|
||||
},
|
||||
});
|
||||
$('form input').on('keypress', function(e) {
|
||||
var code = e.keyCode || e.which;
|
||||
if (code === 13) {
|
||||
@@ -118,7 +107,6 @@
|
||||
document.getElementById("submitButton").click();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -17,8 +17,9 @@
|
||||
${dossier.C_ADR}<br />
|
||||
<span tal:condition="dossier.C_ADR2">${dossier.C_ADR2}<br /></span>
|
||||
${dossier.C_CP} ${dossier.C_VILLE}<br />
|
||||
<span tal:condition="len(dossier.C_EMAIL)">${dossier.C_EMAIL}</span>
|
||||
<span tal:condition="len(dossier.C_EMAIL)==0" class="text-danger"><b>!!! Email vide !!!</b></span>
|
||||
${dossier.C_EMAIL}
|
||||
<span tal:condition="len(dossier.C_EMAIL)==0" class="text-danger"><b>!!! Email vide !!!</b><br /></span>
|
||||
<span tal:condition="len(dossier.C_EMAIL2)">${dossier.C_EMAIL2}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -187,7 +188,8 @@
|
||||
<div id="tab_documents" class="tab-pane fade">
|
||||
<h3>DEVIS - FACTURES</h3>
|
||||
<p>
|
||||
<a class="btn btn-success" role="button" href="${request.route_url('devis_create', nodossier=nodossier)}">
|
||||
<a class="btn btn-success" role="button" href="${request.route_url('devis_create', nodossier=nodossier)}"
|
||||
tal:condition="logged_in=='CAO'">
|
||||
<span class="glyphicon glyphicon-plus"></span> Nouveau devis</a>
|
||||
</p>
|
||||
<table class="table table-bordered table-condensed">
|
||||
|
||||
184
mondumas/templates/parametres/cabinet_edit.pt
Normal file
184
mondumas/templates/parametres/cabinet_edit.pt
Normal file
@@ -0,0 +1,184 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
||||
<br />
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a data-toggle="tab" href="#tab_cabinet"><b>CABINET</b></a></li>
|
||||
<li><a data-toggle="tab" href="#tab_experts"><b>EXPERTS</b></a></li>
|
||||
</ul>
|
||||
<!-- PANEL SUIVI -->
|
||||
<div class="tab-content">
|
||||
<div id="tab_cabinet" class="tab-pane fade in active">
|
||||
|
||||
<h3>CABINET</h3>
|
||||
<form id="rdf_cabinet-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-xs-3" for="CODE">Code</label>
|
||||
<div class="col-xs-9">
|
||||
<input class="form-control" type="text" id="CODE" name="CODE" value="${cabinet.CODE}" readonly />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="NOM">Nom</label>
|
||||
<div class="col-xs-9">
|
||||
<input class="form-control" type="text" id="NOM" name="NOM" value="${cabinet.NOM}"
|
||||
placeholder="30 caractères maximum"
|
||||
data-fv-notempty="true"
|
||||
data-fv-notempty-message="Un libellé est obligatoire"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="30"
|
||||
data-fv-stringlength-message="30 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="ADRESSE">Adresse</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" id="ADRESSE" name="ADRESSE" value="${cabinet.ADRESSE}"
|
||||
placeholder="40 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="40"
|
||||
data-fv-stringlength-message="40 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="ADRESSE2">Adresse 2</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" id="ADRESSE2" name="ADRESSE2" value="${cabinet.ADRESSE2}"
|
||||
placeholder="40 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="40"
|
||||
data-fv-stringlength-message="40 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="code_postal">Code postal - Ville</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" id="code_postal" name="code_postal" value="${code_postal}"
|
||||
placeholder="5 caractères maximum"
|
||||
data-fv-notempty="true"
|
||||
data-fv-notempty-message="Le code postal est obligatoire" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="TEL1">Télphone 1</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="TEL1" value="${cabinet.TEL1}"
|
||||
placeholder="14 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="14"
|
||||
data-fv-stringlength-message="14 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="TEL2">Télphone 2</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="TEL2" value="${cabinet.TEL2}"
|
||||
placeholder="14 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="14"
|
||||
data-fv-stringlength-message="14 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="TELP">Télphone portable</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="TELP" value="${cabinet.TELP}"
|
||||
placeholder="14 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="14"
|
||||
data-fv-stringlength-message="14 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-3 col-sm-9 checkbox">
|
||||
<label><input type="checkbox" name="afficher" value="cabinet.afficher"
|
||||
tal:attributes="checked cabinet.afficher != 0 and 'checked' or None">La fiche est active
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Dern. modif le</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${cabinet.modif_le.strftime('%d-%m-%Y %H:%M')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<a class="btn btn-default" href="/cabinets">
|
||||
<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="cabinet.CODE != '0'">
|
||||
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- PANEL EXPERTS -->
|
||||
<div id="tab_experts" class="tab-pane fade">
|
||||
<h3>EXPERTS</h3>
|
||||
<p>
|
||||
<a class="btn btn-success" role="button" href="/expert_edit/${cabinet.CODE}/0">
|
||||
<span class="glyphicon glyphicon-plus"></span> Nouvel expert</a>
|
||||
</p>
|
||||
<table class="table table-bordered table-condensed">
|
||||
<tr>
|
||||
<th>Code</th>
|
||||
<th>Nom expert</th>
|
||||
<th>Tél 1</th>
|
||||
<th>Tél 2</th>
|
||||
<th>Email</th>
|
||||
</tr>
|
||||
<tr tal:repeat="expert experts">
|
||||
<td>${expert.CODE_EXP}</td>
|
||||
<td>
|
||||
<a href="/expert_edit/${expert.CODE_CAB}/${expert.CODE_EXP}">${expert.NOM}</a>
|
||||
</td>
|
||||
<td>${expert.TEL1}</td>
|
||||
<td>${expert.TEL2}</td>
|
||||
<td>${expert.email}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet">
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#rdf_cabinet-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
});
|
||||
$('#code_postal').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_codepostal',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
57
mondumas/templates/parametres/cabinets.pt
Normal file
57
mondumas/templates/parametres/cabinets.pt
Normal file
@@ -0,0 +1,57 @@
|
||||
<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}/cabinet_edit/0" class="btn btn-success" role="button">
|
||||
<span class="glyphicon glyphicon-plus"></span> Nouvelle cause</a>
|
||||
</p>
|
||||
|
||||
<table id="cabinets" class="table table-striped table-bordered table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Code</th>
|
||||
<th>Nom</th>
|
||||
<th>Tél. 1</th>
|
||||
<th>Tél. 2</th>
|
||||
<th>Portable</th>
|
||||
<th>Ville</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');
|
||||
$('#cabinets').DataTable({
|
||||
data: dataSet,
|
||||
pageLength: 50,
|
||||
bLengthChange: false,
|
||||
language: {
|
||||
url: 'https://cdn.datatables.net/plug-ins/1.10.16/i18n/French.json'
|
||||
},
|
||||
order: [[ 1, "asc" ]],
|
||||
columnDefs: [
|
||||
{ targets: 1,
|
||||
"render": function (data, type, row, meta) {
|
||||
// ajouter un link vers la fiche élève
|
||||
return '<a href="/cabinet_edit/' + row[0] + '">' + data + '</a>';
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
</div><!-- content -->
|
||||
</metal:block>
|
||||
|
||||
|
||||
116
mondumas/templates/parametres/expert_edit.pt
Normal file
116
mondumas/templates/parametres/expert_edit.pt
Normal file
@@ -0,0 +1,116 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
||||
<br />
|
||||
<form id="rdf_cabinet-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-xs-3" for="CODE">Code</label>
|
||||
<div class="col-xs-9">
|
||||
<input class="form-control" type="text" id="CODE" name="CODE" value="${expert.CODE}" readonly />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3" for="NOM">Nom</label>
|
||||
<div class="col-xs-9">
|
||||
<input class="form-control" type="text" id="NOM" name="NOM" value="${expert.NOM}"
|
||||
placeholder="30 caractères maximum"
|
||||
data-fv-notempty="true"
|
||||
data-fv-notempty-message="Un libellé est obligatoire"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="30"
|
||||
data-fv-stringlength-message="30 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="TEL1">Télphone 1</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="TEL1" value="${expert.TEL1}"
|
||||
placeholder="14 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="14"
|
||||
data-fv-stringlength-message="14 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="TEL2">Portable</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="TEL2" value="${expert.TEL2}"
|
||||
placeholder="14 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="14"
|
||||
data-fv-stringlength-message="14 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-3 control-label" for="email">Email</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="email" value="${expert.email}"
|
||||
placeholder="50 caractères maximum"
|
||||
data-fv-emailaddress="true"
|
||||
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-3 col-xs-9 checkbox">
|
||||
<label><input type="checkbox" name="afficher" value="expert.en_activite"
|
||||
tal:attributes="checked expert.en_activite != 0 and 'checked' or None">La fiche est active
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-3">Dern. modif le</label>
|
||||
<div class="col-xs-9">
|
||||
<p class="form-control-static">${expert.modif_le.strftime('%d-%m-%Y %H:%M')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-3 col-xs-9">
|
||||
<a class="btn btn-default" href="/cabinets">
|
||||
<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="expert.CODE != '0'">
|
||||
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet">
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#rdf_cabinet-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
});
|
||||
$('#code_postal').autocomplete({
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url:'/ajax_codepostal',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
recherche: request.term,
|
||||
},
|
||||
success: function (data) {
|
||||
response( data );
|
||||
},
|
||||
});
|
||||
},
|
||||
minLength: 3,
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
@@ -21,6 +21,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row text-center">
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/cabinets"><span class="glyphicon glyphicon-list logo-primary"></span></a>
|
||||
<h4>CABINETS EXP.</h4>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row text-center">
|
||||
<div class="col-sm-3">
|
||||
<a href="${request.application_url}/dashboard"><span class="glyphicon glyphicon-dashboard logo-primary"></span></a>
|
||||
|
||||
@@ -276,7 +276,7 @@ def ajax_codepostal(request):
|
||||
|
||||
# lire les codes postaux commencant par
|
||||
items = get_codespostaux(request, recherche)
|
||||
|
||||
# import pdb;pdb.set_trace()
|
||||
liste=[]
|
||||
for row in items:
|
||||
d = row.code_postal + " - " + row.libelle
|
||||
|
||||
@@ -144,10 +144,9 @@ def devis_web(request):
|
||||
'page-size': 'A4',
|
||||
'margin-top': '1cm',
|
||||
'margin-right': '1cm',
|
||||
'margin-bottom': '1cm',
|
||||
'margin-left': '1cm',
|
||||
'margin-bottom': '2cm',
|
||||
'margin-left': '1.5cm',
|
||||
'footer-font-size':'7',
|
||||
'footer-center': soc.code_ape,
|
||||
'footer-right': '[page] / [topage]',
|
||||
}
|
||||
|
||||
@@ -336,9 +335,9 @@ def devis_preview(request):
|
||||
if ligne.ref == 'T1':
|
||||
dt_html += '<tr><td colspan="3" style="text-align:center;"><h4>%s</h4></td></tr>' % ligne.libelle
|
||||
elif ligne.ref == 'T2':
|
||||
dt_html += '<tr><td colspan="3"><p><b>%s</b></p></td></tr>' % ligne.libelle
|
||||
dt_html += '<tr><td colspan="3" style="text-align:center;"><p><b>%s</b></p></td></tr>' % ligne.libelle
|
||||
elif ligne.ref == 'TX':
|
||||
dt_html += '<tr><td colspan="3"><p>%s</p></td></tr>' % ligne.libelle
|
||||
dt_html += '<tr><td></td><td colspan="3"><p>%s</p></td></tr>' % ligne.libelle
|
||||
elif ligne.type_ligne == 'AR':
|
||||
dt_html += '<tr><td style="vertical-align: top">%s</td>' % ligne.ref
|
||||
dt_html += '<td><p>%s<br />' % ligne.libelle
|
||||
|
||||
@@ -134,6 +134,7 @@ def dossier_view(request):
|
||||
return {
|
||||
'page_title': "Dossier : %s" % (nodossier),
|
||||
'url': url,
|
||||
'logged_in': logged_in,
|
||||
'nodossier': nodossier,
|
||||
'dossier': dossier,
|
||||
'details': details,
|
||||
@@ -606,10 +607,10 @@ def rdf_view(request):
|
||||
# import pdb;pdb.set_trace()
|
||||
options = {
|
||||
'page-size': 'A4',
|
||||
'margin-top': '2cm',
|
||||
'margin-right': '2cm',
|
||||
'margin-bottom': '3cm',
|
||||
'margin-left': '2cm',
|
||||
'margin-top': '1cm',
|
||||
'margin-right': '1cm',
|
||||
'margin-bottom': '2cm',
|
||||
'margin-left': '1.5cm',
|
||||
'footer-font-size':'7',
|
||||
'footer-right': '[page] / [topage]',
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ def rdf_causes(request):
|
||||
'dt_data': json.dumps(liste),
|
||||
}
|
||||
|
||||
@view_config(route_name='rdf_cause_edit', renderer='../templates/parametres/rdf_cause_edit.pt', permission='view')
|
||||
@view_config(route_name='rdf_cause_edit', renderer='../templates/parametres/rdf_cause_edit.pt', permission='manage')
|
||||
def rdf_cause_edit(request):
|
||||
|
||||
logged_in = request.authenticated_userid
|
||||
@@ -528,3 +528,135 @@ def article_edit(request):
|
||||
'message': message,
|
||||
'item': item,
|
||||
'familles': familles,
|
||||
}
|
||||
|
||||
@view_config(route_name='cabinets', renderer='../templates/parametres/cabinets.pt', permission='view')
|
||||
def cabinets(request):
|
||||
|
||||
# lire les CABINETS
|
||||
items = get_cabinets_by_id(request, '0')
|
||||
|
||||
# construire la liste
|
||||
liste=[]
|
||||
for item in items:
|
||||
modif_le = item.modif_le.strftime('%d/%m/%Y')
|
||||
d = (item.CODE, item.NOM, item.TEL1, item.TEL2, item.TELP, item.VILLE, modif_le)
|
||||
liste.append(d)
|
||||
|
||||
|
||||
return {
|
||||
'page_title': 'Liste des cabinets',
|
||||
'dt_data': json.dumps(liste),
|
||||
}
|
||||
|
||||
@view_config(route_name='cabinet_edit', renderer='../templates/parametres/cabinet_edit.pt', permission='view')
|
||||
def cabinet_edit(request):
|
||||
|
||||
logged_in = request.authenticated_userid
|
||||
code = request.matchdict['code']
|
||||
url = request.route_url("cabinet_edit", code=code)
|
||||
|
||||
message = ''
|
||||
if code == '0':
|
||||
# nouveau
|
||||
cabinet = {}
|
||||
cabinet['CODE'] = ''
|
||||
cabinet['NOM'] = ''
|
||||
cabinet['TEL1'] = ''
|
||||
cabinet['TEL2'] = ''
|
||||
cabinet['TELP'] = ''
|
||||
cabinet['ADR'] = ''
|
||||
cabinet['ADR2'] = ''
|
||||
cabinet['CP'] = ''
|
||||
cabinet['VILLE'] = ''
|
||||
cabinet['afficher'] = 0
|
||||
cabinet['modif_le'] = datetime.now()
|
||||
page_title= 'Nouveau cabinet'
|
||||
else:
|
||||
# lire cabinets
|
||||
cabinet = get_cabinets_by_id(request, code)
|
||||
if not cabinet:
|
||||
request.session.flash(u"Cabinet non trouvé : %s" % code, 'warning')
|
||||
return HTTPFound(location=request.route_url('cabinets'))
|
||||
|
||||
page_title= "Modification de %s" % (cabinet.NOM)
|
||||
code_postal = '%s - %s' % (cabinet.CP, cabinet.VILLE)
|
||||
experts = get_experts_by_id(request, cabinet.CODE, '0')
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
code = request.params['code']
|
||||
libelle = request.params['libelle']
|
||||
|
||||
update_cabinet(request, code, libelle)
|
||||
request.session.flash(u"Le cabinet a été mis à jour avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('cabinets'))
|
||||
|
||||
if 'form.deleted' in request.params:
|
||||
delete_cabinet(request, code)
|
||||
request.session.flash(u"Le cabinet a été supprimé avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('cabinets'))
|
||||
|
||||
return {
|
||||
'page_title': page_title,
|
||||
'url': url,
|
||||
'cabinet': cabinet,
|
||||
'experts': experts,
|
||||
'code_postal': code_postal,
|
||||
'message': message,
|
||||
}
|
||||
|
||||
@view_config(route_name='expert_edit', renderer='../templates/parametres/expert_edit.pt', permission='view')
|
||||
def expert_edit(request):
|
||||
|
||||
logged_in = request.authenticated_userid
|
||||
code_cab = request.matchdict['code_cab']
|
||||
code_exp = request.matchdict['code_exp']
|
||||
url = request.route_url("expert_edit", code_cab=code_cab, code_exp=code_exp)
|
||||
|
||||
message = ''
|
||||
if code_exp == '0':
|
||||
# nouveau
|
||||
expert = {}
|
||||
expert['CODE'] = ''
|
||||
expert['NOM'] = ''
|
||||
expert['TEL1'] = ''
|
||||
expert['TEL2'] = ''
|
||||
expert['TELP'] = ''
|
||||
expert['ADR'] = ''
|
||||
expert['ADR2'] = ''
|
||||
expert['CP'] = ''
|
||||
expert['VILLE'] = ''
|
||||
expert['afficher'] = 0
|
||||
expert['modif_le'] = datetime.now()
|
||||
page_title= 'Nouveau expert'
|
||||
else:
|
||||
# lire experts
|
||||
expert = get_experts_by_id(request, code)
|
||||
if not expert:
|
||||
request.session.flash(u"expert non trouvé : %s" % code, 'warning')
|
||||
return HTTPFound(location=request.route_url('experts'))
|
||||
|
||||
page_title= "Modification de %s" % (expert.NOM)
|
||||
code_postal = '%s - %s' % (expert.CP, expert.VILLE)
|
||||
experts = get_experts_by_id(request, expert.CODE, '0')
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
code = request.params['code']
|
||||
libelle = request.params['libelle']
|
||||
|
||||
update_expert(request, code, libelle)
|
||||
request.session.flash(u"Le expert a été mis à jour avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('experts'))
|
||||
|
||||
if 'form.deleted' in request.params:
|
||||
delete_expert(request, code)
|
||||
request.session.flash(u"Le expert a été supprimé avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('experts'))
|
||||
|
||||
return {
|
||||
'page_title': page_title,
|
||||
'url': url,
|
||||
'expert': expert,
|
||||
'experts': experts,
|
||||
'code_postal': code_postal,
|
||||
'message': message,
|
||||
|
||||
Reference in New Issue
Block a user