compléter rdf_edit.pt

This commit is contained in:
2019-03-03 07:56:49 +01:00
parent edd77fe431
commit 1afefbcc4e
5 changed files with 258 additions and 61 deletions

View File

@@ -157,7 +157,7 @@ def update_dossier(request, nodossier, new_values):
s = "%s=:%s" % (param, param)
new_values['societe'] = societe
new_values['nochantier'] = nochantier
query = u"UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s
query = "UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s
execute_query(request, query, new_values)
def insert_dossier_attaches(request, nodossier, filename, filesize, user):
@@ -169,27 +169,31 @@ def insert_dossier_attaches(request, nodossier, filename, filesize, user):
VALUES('DOCS_ATTACHES',:societe,:nochantier,:filename,:filesize,NOW(),:user);"""
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'filename': filename, 'filesize': filesize, 'user': user})
def get_rapport_by_no(request,nodossier):
def get_rapport_by_no(request,nodossier,date_inter):
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()
if date_inter == '':
query = "SELECT * FROM dem_rdf WHERE societe = :societe AND nochantier = :nochantier;"
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).fetchall()
else:
query = "SELECT * FROM dem_rdf WHERE societe = :societe AND nochantier = :nochantier AND date_inter=:date_inter;"
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'date_inter': date_inter}).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})
query = """REPLACE 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, auteur_code)
SELECT societe, no_id, cd_cli, nomcli, c_qualite, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, c_telp, nosin, :auteur_code FROM dem_devis WHERE societe = :societe AND no_id = :nochantier;"""
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'auteur_code': 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):
def update_rapport(request, nodossier, date_inter, new_values):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
@@ -201,6 +205,7 @@ def update_rdf(request, nodossier, new_values):
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
new_values['date_inter'] = date_inter
query = "UPDATE dem_rdf SET %s WHERE societe=:societe AND nochantier=:nochantier AND date_inter=:date_inter;" % s
execute_query(request, query, new_values)

View File

@@ -18,7 +18,7 @@ def includeme(config):
config.add_route('dossier_select', '/dossier_select/{date}')
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
config.add_route('dossier_view', '/dossier_view/{nodossier}')
config.add_route('rdf_edit','/rdf_edit/{nodossier}')
config.add_route('rdf_edit','/rdf_edit/{nodossier}/{date_inter}')
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
config.add_route('upload_doc', '/upload_doc/{nodossier}')
# parametres

View File

@@ -177,25 +177,27 @@
<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)}">
<a class="btn btn-success" role="button" href="${request.route_url('rdf_edit', nodossier=nodossier, date_inter='new')}">
<span class="glyphicon glyphicon-plus"></span> Nouvelle recherche</a>
</p>
<table class="table table-bordered table-condensed" tal:condition="rapport">
<table class="table table-bordered table-condensed" tal:condition="rapports">
<tr>
<th>Numéro</th>
<th>Date</th>
<th>Date Interv.</th>
<th>Date Rapport</th>
<th>Chantier</th>
<th>No sinistre</th>
<th>Modif le</th>
</tr>
<tr>
<tr tal:repeat="rapport rapports">
<td>
<a href="/rdf_edit/${nodossier}">${rapport.nochantier}</a>
<a href="/rdf_edit/${nodossier}/${rapport.date_inter.strftime('%Y-%m-%d')}">
${rapport.date_inter.strftime('%d-%m-%Y')}</a>
</td>
<td>${rapport.DATE.strftime('%d-%m-%Y')}</td>
<td tal:condition="rapport.date_rapport">${rapport.date_rapport.strftime('%d-%m-%Y')}</td>
<td tal:condition="not rapport.date_rapport"></td>
<td>${rapport.C_QUALITE} ${rapport.C_NOM}</td>
<td>${rapport.NOSIN}</td>
<td>${rapport.modif_le.strftime('%d-%m-%Y')}</td>
<td>${rapport.modif_le.strftime('%d-%m-%Y')} - ${rapport.auteur_code}</td>
</tr>
</table>
</div>

View File

@@ -35,6 +35,24 @@
data-fv-icon-invalid="glyphicon glyphicon-remove"
data-fv-icon-validating="glyphicon glyphicon-refresh">
<div class="form-group">
<label class="control-label" for="rapport">Compte-rendu :&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="rapport" tal:attributes="checked rapport.rapport=='Définitif'">Définitif
</label>
<label class="radio-inline">
<input type="radio" name="rapport" tal:attributes="checked rapport.rapport=='Provisoire'">Provisoire
</label>
</div>
<div class="form-group">
<label class="control-label" for="statut_proprio">Statut :&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="statut_proprio" tal:attributes="checked rapport.statut_proprio=='Propriétaire'">Propriétaire
</label>
<label class="radio-inline">
<input type="radio" name="statut_proprio" tal:attributes="checked rapport.statut_proprio=='Non Propriétaire'">Non propriétaire
</label>
</div>
<div class="form-group">
<label class="control-label" for="comment">Caractéristique du risque sinistré :</label>
<select class="form-control" id="caracteristique" name="caracteristique">
@@ -49,22 +67,132 @@
<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>
<option value="${item.libelle}" tal:attributes="selected 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>
<label class="control-label" for="reseau_int">Les dommages sont-ils causés par un réseau intérieur au bâtiment ?</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>
<option value="${item.libelle}" tal:attributes="selected rapport.reseau_int==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<div class="form-group">
<label class="control-label" for="reseau_ext">Les dommages sont-ils causés par un réseau extérieur au bâtiment ?</label>
<select class="form-control" id="reseau_ext" name="reseau_ext">
<div tal:repeat="item reseaux_ext">
<option value="${item.libelle}" tal:attributes="selected rapport.reseau_ext==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<div class="form-group">
<label class="control-label" for="anti_retour">Le bien sinistré est-il protégé par un dispositif anti-retour ?&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="anti_retour" tal:attributes="checked rapport.anti_retour=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="anti_retour" tal:attributes="checked rapport.anti_retour=='OUI'">OUI
</label>
</div>
<div class="form-group">
<label class="control-label" for="reseau_local">Localisation de ces réseaux intérieurs ou extérieurs</label>
<select class="form-control" id="reseau_local" name="reseau_local">
<div tal:repeat="item reseaux_local">
<option value="${item.libelle}" tal:attributes="selected str(rapport.reseau_local)==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<div class="form-group">
<label class="control-label" for="element_clos">Les dommages sont-ils causés par un élément de clos du bâtiment ?</label>
<select class="form-control" id="element_clos" name="element_clos">
<div tal:repeat="item elements_clos">
<option value="${item.libelle}" tal:attributes="selected str(rapport.element_clos)==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<div class="form-group">
<label class="control-label" for="element_couvert">Les dommages sont-ils causés par un élément couvert du bâtiment ?</label>
<select class="form-control" id="element_couvert" name="element_couvert">
<div tal:repeat="item elements_couvert">
<option value="${item.libelle}" tal:attributes="selected str(rapport.element_couvert)==item.libelle and 'selected' or None">${item.libelle}</option>
</div>
</select>
</div>
<div class="form-group">
<label class="control-label" for="voisin">Les dommages sont-ils causés par un bâtiment voisin ?&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="voisin" tal:attributes="checked rapport.voisin=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="voisin" tal:attributes="checked rapport.voisin=='OUI'">OUI
</label>
</div>
<div class="form-group">
<label class="control-label" for="voisin_adresse">Adresse du bâtiment</label>
<input class="form-control" type="text" id="voisin_adresse" name="voisin_adresse" value="${rapport.voisin_adresse}"
data-fv-stringlength="true"
data-fv-stringlength-max="150"
data-fv-stringlength-message="150 caractères maximum" />
</div>
<div class="form-group">
<label class="control-label" for="voisin_coordonnees">Coordonnées propriétaire ou syndic</label>
<input class="form-control" type="text" id="voisin_coordonnees" name="voisin_coordonnees" value="${rapport.voisin_coordonnees}"
data-fv-stringlength="true"
data-fv-stringlength-max="150"
data-fv-stringlength-message="150 caractères maximum" />
</div>
<h4 class="text-center">RAPPORT</h4>
<div class="form-group">
<label class="control-label" for="degats">Constatation des dégâts occasionnés</label>
<textarea class="form-control" rows="6" cols="40" id="degats" name="degats"
data-fv-stringlength="true"
data-fv-stringlength-max="2000"
data-fv-stringlength-message="2000 caractères maximum">${rapport.degats}
</textarea>
</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>
<label class="control-label" for="detection_fuite">Détection de la fuite :&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="detection_fuite" tal:attributes="checked rapport.detection_fuite=='Destructif'">Destructif
</label>
<label class="radio-inline">
<input type="radio" name="detection_fuite" tal:attributes="checked rapport.detection_fuite=='Non destructif'">Non destructif
</label>
</div>
<div class="form-group">
<label class="control-label">Mesures d'humidité :&nbsp;&nbsp;&nbsp;</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.sonde_capa}">Sonde capacitive</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.sonde_cond}">Sonde à conductivité électrique</label>
</div>
<div class="form-group">
<label class="control-label">Test de réseaux :&nbsp;&nbsp;&nbsp;</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.test_mano}">Système manométrique</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.test_gaz}">Gaz traceur</label>
</div>
<div class="form-group">
<label class="control-label">Visualisation :&nbsp;&nbsp;&nbsp;</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.visu_camera}">Caméra infrarouge</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.visu_endoscope}">Endoscope à fibre optique</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.visu_tele}">Endoscope à fibre optique</label>
</div>
<div class="form-group">
<label class="control-label">Recherche de réseaux :&nbsp;&nbsp;&nbsp;</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.rech_magnetique}">Système électro magnétique<>/label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.rech_accoustique}">Système électro accoustique</label>
</div>
<div class="form-group">
<label class="control-label">Tests d'étanchéité :&nbsp;&nbsp;&nbsp;</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.test_accoustique}">Ecoute électro accoustique</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.test_mise_en_eau}">Mise en eau</label>
<label class="checkbox-inline"><input type="checkbox" value="${rapport.test_fumigenes}">Fumigènes</label>
</div>
<div class="form-group">
<label class="control-label" for="descr_detect">Descriptif de la 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"
@@ -74,13 +202,61 @@
<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>
<label class="control-label" for="visite1ere">La réparation est-elle réalisée dans le cadre de la 1ère visite ?&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="visite1ere" tal:attributes="checked rapport.visite1ere=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="visite1ere" tal:attributes="checked rapport.visite1ere=='OUI'">OUI
</label>
</div>
<div class="form-group">
<label class="control-label" for="descr_repar">Descriptif de la solution de 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>
<p class="text-center"><b>Constation de situation de blocage</b></p>
<div class="form-group">
<label class="control-label" for="blocage_acces">Impossibilité d'accès dans le local où la recherche doi être réalisée&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="blocage_acces" tal:attributes="checked rapport.blocage_acces=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="blocage_acces" tal:attributes="checked rapport.blocage_acces=='OUI'">OUI
</label>
</div>
<div class="form-group">
<label class="control-label" for="blocage_rdf_differente">Nécessité de faire une recherchede fuite destructive dans le local du responsable différent de la victime&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="blocage_rdf_differente" tal:attributes="checked rapport.blocage_rdf_differente=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="blocage_rdf_differente" tal:attributes="checked rapport.blocage_rdf_differente=='OUI'">OUI
</label>
</div>
<div class="form-group">
<label class="control-label" for="blocage_rdf_infructueuse">Recherche de fuite infructueuse&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="blocage_rdf_infructueuse" tal:attributes="checked rapport.blocage_rdf_infructueuse=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="blocage_rdf_infructueuse" tal:attributes="checked rapport.blocage_rdf_infructueuse=='OUI'">OUI
</label>
</div>
<div class="form-group">
<label class="control-label" for="blocage_pluralite">Pluralité de locaux sinistrés autre que le local à l'origine de la fuite&nbsp;&nbsp;&nbsp;</label>
<label class="radio-inline">
<input type="radio" name="blocage_pluralite" tal:attributes="checked rapport.blocage_pluralite=='NON'">NON
</label>
<label class="radio-inline">
<input type="radio" name="blocage_pluralite" tal:attributes="checked rapport.blocage_pluralite=='OUI'">OUI
</label>
</div>
<h4 class="text-center">PHOTOS</h4>
<p>
<a href="${request.application_url}/upload_doc/${nodossier}" class="btn btn-success" role="button">
@@ -97,11 +273,14 @@
</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 class="col-sm-6">
<p>
Date du rapport : ${rapport.modif_le.strftime('%d-%m-%Y')}<br />
Etabli par ${rapport.auteur_nom}
</p>
</div>
<div class="col-sm-6">
<p>Signature du client</p>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">

View File

@@ -44,11 +44,11 @@ def dossier_lookup(request):
goto_url = '/dossier_selected/dossier_view/%s/' % date.today().strftime('%Y-%m-%d')
url = request.route_url('dossier_lookup')
message = u''
message = ''
societes = ['PE','ME','PL','PO','CD']
societe = 'PE'
liste=[]
name = u''
name = ''
cb_tous = "non"
if 'form.submitted' in request.params:
@@ -62,7 +62,7 @@ def dossier_lookup(request):
cb_tous = "non"
chantiers = get_chantiers_byName(request, societe, name, False)
if len(chantiers) == 0:
message = u"Chantier non trouvé : %s" % name
message = "Chantier non trouvé : %s" % name
# construire la liste
for item in chantiers:
d = ('%s-%s' % (societe, item.numero),item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant),
@@ -70,7 +70,7 @@ def dossier_lookup(request):
liste.append(d)
return {
'page_title': u"Rechercher un chantier",
'page_title': "Rechercher un chantier",
'url': url,
'goto_url': goto_url,
'message': message,
@@ -103,9 +103,9 @@ def dossier_view(request):
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
if nodossier.startswith('PL'):
# lire rapport de rdf
rapport = get_rapport_by_no(request, nodossier)
rapports = get_rapport_by_no(request, nodossier, '')
else:
rapport = []
rapports = []
# select background color according to society
bg_color = "bg-%s" % societe
@@ -114,7 +114,7 @@ def dossier_view(request):
'nodossier': nodossier,
'dossier': dossier,
'details': details,
'rapport': rapport,
'rapports': rapports,
'documents': documents,
'similaires': similaires,
'docs_attaches': docs_attaches,
@@ -325,19 +325,25 @@ def upload_doc(request):
def rdf_edit(request):
logged_in = request.authenticated_userid.upper()
nodossier = request.matchdict['nodossier']
url = request.route_url('rdf_edit', nodossier=nodossier)
date_inter = request.matchdict['date_inter']
# lire le rapport
rapport = get_rapport_by_no(request, nodossier)
if rapport == None:
# si non trouvé, creer un nouveau rapport
if date_inter == 'new':
# creer un nouveau rapport
insert_rapport(request, nodossier, logged_in)
# lire le rapport
rapport = get_rapport_by_no(request, nodossier)
date_inter = date.today().strftime('%Y-%m-%d')
caracteristiques = ["Maison individuelle", "Immeuble collectif", u"Copropriété", "Commerce", "Bureaux"]
url = request.route_url('rdf_edit', nodossier=nodossier, date_inter=date_inter)
# lire le rapport
rapport = get_rapport_by_no(request, nodossier, date_inter)
caracteristiques = ["Maison individuelle", "Immeuble collectif", "Copropriété", "Commerce", "Bureaux"]
equipements = get_rdf_causes(request, 'C01')
reseaux_int = get_rdf_causes(request, 'C02')
reseaux_ext = get_rdf_causes(request, 'C03')
reseaux_local = get_rdf_causes(request, 'C04')
elements_clos = get_rdf_causes(request, 'C05')
elements_couvert = get_rdf_causes(request, 'C06')
voisins = get_rdf_causes(request, 'C07')
if 'form.submitted' in request.params:
new_values = {}
@@ -346,12 +352,12 @@ def rdf_edit(request):
new_values[param] = request.params[param]
if new_values:
update_rdf(request, nodossier, new_values)
update_rapport(request, nodossier, date_inter, 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,
'page_title': "Rapport de RDF : %s du %s" % (nodossier, rapport.date_inter.strftime('%d-%m-%Y')),
'url': url,
'logged_in': logged_in,
'rapport': rapport,
@@ -359,5 +365,10 @@ def rdf_edit(request):
'caracteristiques': caracteristiques,
'equipements': equipements,
'reseaux_int': reseaux_int,
'reseaux_ext': reseaux_ext,
'reseaux_local': reseaux_local,
'elements_clos': elements_clos,
'elements_couvert': elements_couvert,
'voisins':voisins,
}