ajout cabinet+experts

This commit is contained in:
2020-12-17 12:13:22 +01:00
parent 154264fbad
commit ca04eb551b
16 changed files with 566 additions and 46 deletions

View File

@@ -26,11 +26,6 @@ def get_userAccess(request, logged_in):
else: else:
return 0 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): def get_member_by_mdp_oublie(request, lien):
query = "SELECT * FROM p_users WHERE mdp_oublie=:lien;" query = "SELECT * FROM p_users WHERE mdp_oublie=:lien;"
results = request.dbsession.execute(query, {'lien':lien}).first() 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() results = request.dbsession.execute(query, {'ref': libelle}).first()
return results 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

View File

@@ -44,6 +44,26 @@ def get_dossiers_byChantier(request, societe, name):
results = request.dbsession.execute(query).fetchall() results = request.dbsession.execute(query).fetchall()
return results 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): def get_rdf_causes_by_id(request, code):
# lire les rdf_causes # lire les rdf_causes
if code == '0': if code == '0':

View File

@@ -50,10 +50,13 @@ def includeme(config):
config.add_route('parametres', '/parametres') config.add_route('parametres', '/parametres')
config.add_route('article_edit', '/article_edit/{ref}') config.add_route('article_edit', '/article_edit/{ref}')
config.add_route('articles', '/articles') 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('connecter_a', '/connecter_a/{login}')
config.add_route('dashboard', '/dashboard') config.add_route('dashboard', '/dashboard')
config.add_route('emails_msg', '/emails_msg/{nolig}') config.add_route('emails_msg', '/emails_msg/{nolig}')
config.add_route('emails_sent', '/emails_sent') 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('infrastructure', '/infrastructure')
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}')

View File

@@ -39,9 +39,9 @@
</div> </div>
</div> </div>
<div class="form-group"> <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"> <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> </div>
<div class="form-group"> <div class="form-group">
@@ -81,7 +81,7 @@
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static">${ligne.ref}</p> <p class="form-control-static">${ligne.ref}</p>
</div> </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"> <div class="col-sm-10">
<p class="form-control-static">${ligne.libelle}</p> <p class="form-control-static">${ligne.libelle}</p>
</div> </div>

View File

@@ -32,7 +32,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <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"> <div class="col-xs-8">
<input class="form-control" type="text" id="code_postal" name="code_postal" value="${code_postal}" <input class="form-control" type="text" id="code_postal" name="code_postal" value="${code_postal}"
placeholder="5 caractères maximum" placeholder="5 caractères maximum"
@@ -76,6 +76,15 @@
data-fv-emailaddress-message="L'adresse email n'est pas valide" /> data-fv-emailaddress-message="L'adresse email n'est pas valide" />
</div> </div>
</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"> <div class="form-group">
<label class="col-xs-3 control-label">Téléphone fixe</label> <label class="col-xs-3 control-label">Téléphone fixe</label>
<div class="col-xs-5"> <div class="col-xs-5">
@@ -152,6 +161,8 @@
<br /> <br />
<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"> <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 src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script> <script>
@@ -177,6 +188,6 @@ $(document).ready(function() {
}); });
}); });
</script> </script>
</div>
</div> </div>
</metal:block> </metal:block>

View File

@@ -28,18 +28,16 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Nom ou numéro du chantier</label> <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}" <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" > 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>&nbsp;Rechercher</button>
</div>
</div> </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>&nbsp;Rechercher</button>
</div>
</div>
</form> </form>
</div><!-- row --> </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) { $('form input').on('keypress', function(e) {
var code = e.keyCode || e.which; var code = e.keyCode || e.which;
if (code === 13) { if (code === 13) {
@@ -118,7 +107,6 @@
document.getElementById("submitButton").click(); document.getElementById("submitButton").click();
} }
}); });
</script> </script>
</div> </div>

View File

@@ -17,8 +17,9 @@
${dossier.C_ADR}<br /> ${dossier.C_ADR}<br />
<span tal:condition="dossier.C_ADR2">${dossier.C_ADR2}<br /></span> <span tal:condition="dossier.C_ADR2">${dossier.C_ADR2}<br /></span>
${dossier.C_CP} ${dossier.C_VILLE}<br /> ${dossier.C_CP} ${dossier.C_VILLE}<br />
<span tal:condition="len(dossier.C_EMAIL)">${dossier.C_EMAIL}</span> ${dossier.C_EMAIL}
<span tal:condition="len(dossier.C_EMAIL)==0" class="text-danger"><b>!!! Email vide !!!</b></span> <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> </td>
</tr> </tr>
<tr> <tr>
@@ -187,7 +188,8 @@
<div id="tab_documents" class="tab-pane fade"> <div id="tab_documents" class="tab-pane fade">
<h3>DEVIS - FACTURES</h3> <h3>DEVIS - FACTURES</h3>
<p> <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> <span class="glyphicon glyphicon-plus"></span> Nouveau devis</a>
</p> </p>
<table class="table table-bordered table-condensed"> <table class="table table-bordered table-condensed">

View 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>

View 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>

View 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>

View File

@@ -21,6 +21,13 @@
</div> </div>
</div> </div>
<br /> <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="row text-center">
<div class="col-sm-3"> <div class="col-sm-3">
<a href="${request.application_url}/dashboard"><span class="glyphicon glyphicon-dashboard logo-primary"></span></a> <a href="${request.application_url}/dashboard"><span class="glyphicon glyphicon-dashboard logo-primary"></span></a>

View File

@@ -276,7 +276,7 @@ def ajax_codepostal(request):
# lire les codes postaux commencant par # lire les codes postaux commencant par
items = get_codespostaux(request, recherche) items = get_codespostaux(request, recherche)
# import pdb;pdb.set_trace()
liste=[] liste=[]
for row in items: for row in items:
d = row.code_postal + " - " + row.libelle d = row.code_postal + " - " + row.libelle

View File

@@ -144,10 +144,9 @@ def devis_web(request):
'page-size': 'A4', 'page-size': 'A4',
'margin-top': '1cm', 'margin-top': '1cm',
'margin-right': '1cm', 'margin-right': '1cm',
'margin-bottom': '1cm', 'margin-bottom': '2cm',
'margin-left': '1cm', 'margin-left': '1.5cm',
'footer-font-size':'7', 'footer-font-size':'7',
'footer-center': soc.code_ape,
'footer-right': '[page] / [topage]', 'footer-right': '[page] / [topage]',
} }
@@ -336,9 +335,9 @@ def devis_preview(request):
if ligne.ref == 'T1': if ligne.ref == 'T1':
dt_html += '<tr><td colspan="3" style="text-align:center;"><h4>%s</h4></td></tr>' % ligne.libelle dt_html += '<tr><td colspan="3" style="text-align:center;"><h4>%s</h4></td></tr>' % ligne.libelle
elif ligne.ref == 'T2': 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': 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': elif ligne.type_ligne == 'AR':
dt_html += '<tr><td style="vertical-align: top">%s</td>' % ligne.ref dt_html += '<tr><td style="vertical-align: top">%s</td>' % ligne.ref
dt_html += '<td><p>%s<br />' % ligne.libelle dt_html += '<td><p>%s<br />' % ligne.libelle

View File

@@ -134,6 +134,7 @@ def dossier_view(request):
return { return {
'page_title': "Dossier : %s" % (nodossier), 'page_title': "Dossier : %s" % (nodossier),
'url': url, 'url': url,
'logged_in': logged_in,
'nodossier': nodossier, 'nodossier': nodossier,
'dossier': dossier, 'dossier': dossier,
'details': details, 'details': details,
@@ -606,10 +607,10 @@ def rdf_view(request):
# import pdb;pdb.set_trace() # import pdb;pdb.set_trace()
options = { options = {
'page-size': 'A4', 'page-size': 'A4',
'margin-top': '2cm', 'margin-top': '1cm',
'margin-right': '2cm', 'margin-right': '1cm',
'margin-bottom': '3cm', 'margin-bottom': '2cm',
'margin-left': '2cm', 'margin-left': '1.5cm',
'footer-font-size':'7', 'footer-font-size':'7',
'footer-right': '[page] / [topage]', 'footer-right': '[page] / [topage]',
} }

View File

@@ -279,7 +279,7 @@ def rdf_causes(request):
'dt_data': json.dumps(liste), '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): def rdf_cause_edit(request):
logged_in = request.authenticated_userid logged_in = request.authenticated_userid
@@ -528,3 +528,135 @@ def article_edit(request):
'message': message, 'message': message,
'item': item, 'item': item,
'familles': familles, '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,

View File

@@ -20,16 +20,16 @@ pyramid.includes =
sqlalchemy.url = mysql://phuoc:phuoc!@192.168.0.31/bddevfac?charset=utf8 sqlalchemy.url = mysql://phuoc:phuoc!@192.168.0.31/bddevfac?charset=utf8
sqlalchemy.pool_recycle = 3600 sqlalchemy.pool_recycle = 3600
mondumas.admin_email = sas.dumas@orange.fr mondumas.admin_email = no-reply@entreprise-dumas.co
mondumas.devfac_url = mondumas:static/DEVFAC/ mondumas.devfac_url = mondumas:static/DEVFAC/
mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES
# Mailer configuration # Mailer configuration
mail.host = smtp.orange.fr mail.host = v5.alinto.netc
mail.port = 465 mail.port = 465
mail.username = sas.dumas@orange.fr mail.username = sasdumas@entreprise-dumas.com
mail.password = sasdumas mail.password = Sasdumas69
mail.ssl = yes mail.ssl = True
[server:main] [server:main]
use = egg:waitress#main use = egg:waitress#main