refactor: update GIEP inspection logic to use camera inspections, invert defect coloring for specific questions, and update related translations.

This commit is contained in:
kdeterme 2026-09-07 14:02:28 +02:00
parent 5eeda20ee6
commit 787799cf11
9 changed files with 141 additions and 56 deletions

View file

@ -283,12 +283,15 @@ msgstr "Inspection GIEP / Eaux pluviales"
msgid "Inspections GIEP / Eaux pluviales" msgid "Inspections GIEP / Eaux pluviales"
msgstr "Inspections GIEP / Eaux pluviales" msgstr "Inspections GIEP / Eaux pluviales"
#: inspections/models.py:555 #: inspections/models.py:641
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1064
msgid "Inspection" msgid "Inspection"
msgstr "Inspection" msgstr "Inspection"
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1218
msgid "Inspection caméra"
msgstr "Camera inspection"
#: inspections/models.py:561 #: inspections/models.py:561
msgid "Clé de question / Média" msgid "Clé de question / Média"
msgstr "" msgstr ""
@ -503,7 +506,13 @@ msgid "Aucune"
msgstr "None" msgstr "None"
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:330 #: inspections/templates/inspections/components/asset_details/_naturerwiz.html:330
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1052 #: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1206
msgid "Renforcement de l’entretien préventif"
msgstr "Reinforcement of preventive maintenance"
msgid "Renforcement de l'entretien préventif"
msgstr "Reinforcement of preventive maintenance"
msgid "Interventions préventives" msgid "Interventions préventives"
msgstr "Preventive maintenance" msgstr "Preventive maintenance"

View file

@ -283,12 +283,15 @@ msgstr "Inspection GIEP / Eaux pluviales"
msgid "Inspections GIEP / Eaux pluviales" msgid "Inspections GIEP / Eaux pluviales"
msgstr "Inspections GIEP / Eaux pluviales" msgstr "Inspections GIEP / Eaux pluviales"
#: inspections/models.py:555 #: inspections/models.py:641
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1064
msgid "Inspection" msgid "Inspection"
msgstr "Inspection" msgstr "Inspection"
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1218
msgid "Inspection caméra"
msgstr "Inspection caméra"
#: inspections/models.py:561 #: inspections/models.py:561
msgid "Clé de question / Média" msgid "Clé de question / Média"
msgstr "Clé de question / Média" msgstr "Clé de question / Média"
@ -505,7 +508,13 @@ msgid "Aucune"
msgstr "Aucune" msgstr "Aucune"
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:330 #: inspections/templates/inspections/components/asset_details/_naturerwiz.html:330
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1052 #: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1206
msgid "Renforcement de l’entretien préventif"
msgstr "Renforcement de l’entretien préventif"
msgid "Renforcement de l'entretien préventif"
msgstr "Renforcement de l’entretien préventif"
msgid "Interventions préventives" msgid "Interventions préventives"
msgstr "Interventions préventives" msgstr "Interventions préventives"

View file

@ -283,12 +283,15 @@ msgstr ""
msgid "Inspections GIEP / Eaux pluviales" msgid "Inspections GIEP / Eaux pluviales"
msgstr "" msgstr ""
#: inspections/models.py:555 #: inspections/models.py:641
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1064
msgid "Inspection" msgid "Inspection"
msgstr "Inspectie" msgstr "Inspectie"
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1218
msgid "Inspection caméra"
msgstr "Camerainspectie"
#: inspections/models.py:561 #: inspections/models.py:561
msgid "Clé de question / Média" msgid "Clé de question / Média"
msgstr "" msgstr ""
@ -503,7 +506,13 @@ msgid "Aucune"
msgstr "Geen" msgstr "Geen"
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:330 #: inspections/templates/inspections/components/asset_details/_naturerwiz.html:330
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1052 #: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1206
msgid "Renforcement de l’entretien préventif"
msgstr "Versterking van preventief onderhoud"
msgid "Renforcement de l'entretien préventif"
msgstr "Versterking van preventief onderhoud"
msgid "Interventions préventives" msgid "Interventions préventives"
msgstr "Preventief onderhoud" msgstr "Preventief onderhoud"

View file

@ -302,7 +302,7 @@
</div> </div>
{% endwith %} {% endwith %}
{% with val=q|get_q_val:'ta_bo_sediments' %} {% with val=q|get_q_val:'ta_sediments,ta_bo_sediments' %}
<div class="d-flex align-items-center justify-content-between p-2 mb-1.5 rounded border {% if val == 'null' %}bg-light opacity-75{% else %}bg-white{% endif %}"> <div class="d-flex align-items-center justify-content-between p-2 mb-1.5 rounded border {% if val == 'null' %}bg-light opacity-75{% else %}bg-white{% endif %}">
<span class="small fw-medium {% if val == 'null' %}text-muted{% else %}text-dark{% endif %} me-2">{% translate "Présence de sédiments dans l'ouvrage ?" %}</span> <span class="small fw-medium {% if val == 'null' %}text-muted{% else %}text-dark{% endif %} me-2">{% translate "Présence de sédiments dans l'ouvrage ?" %}</span>
<span class="badge {% if val == 'true' or val == True or val == 'oui' %}bg-danger-subtle text-danger border border-danger-subtle{% elif val == 'false' or val == False or val == 'non' %}bg-success-subtle text-success border border-success-subtle{% else %}bg-light text-muted border{% endif %} px-2 py-1"> <span class="badge {% if val == 'true' or val == True or val == 'oui' %}bg-danger-subtle text-danger border border-danger-subtle{% elif val == 'false' or val == False or val == 'non' %}bg-success-subtle text-success border border-success-subtle{% else %}bg-light text-muted border{% endif %} px-2 py-1">
@ -327,7 +327,7 @@
<span class="badge bg-success-subtle text-success border border-success-subtle p-2"><i class="bi bi-check-circle me-1"></i>{% translate "Aucune" %}</span> <span class="badge bg-success-subtle text-success border border-success-subtle p-2"><i class="bi bi-check-circle me-1"></i>{% translate "Aucune" %}</span>
{% endif %} {% endif %}
{% if ouv.actions.interventions_preventives or ouv.actions.renforcement_preventif %} {% if ouv.actions.interventions_preventives or ouv.actions.renforcement_preventif %}
<span class="badge bg-warning-subtle text-warning border border-warning-subtle p-2"><i class="bi bi-clock-history me-1"></i>{% translate "Interventions préventives" %}</span> <span class="badge bg-warning-subtle text-warning border border-warning-subtle p-2"><i class="bi bi-clock-history me-1"></i>{% translate "Renforcement de l’entretien préventif" %}</span>
{% endif %} {% endif %}
{% if ouv.actions.entretien_curatif %} {% if ouv.actions.entretien_curatif %}
<span class="badge bg-danger-subtle text-danger border border-danger-subtle p-2"><i class="bi bi-exclamation-triangle me-1"></i>{% translate "Entretien curatif / Réparation / Adaptation nécessaire" %}</span> <span class="badge bg-danger-subtle text-danger border border-danger-subtle p-2"><i class="bi bi-exclamation-triangle me-1"></i>{% translate "Entretien curatif / Réparation / Adaptation nécessaire" %}</span>
@ -335,8 +335,8 @@
{% if ouv.actions.test_permeabilite %} {% if ouv.actions.test_permeabilite %}
<span class="badge bg-info-subtle text-info border border-info-subtle p-2"><i class="bi bi-speedometer2 me-1"></i>{% translate "Test de perméabilité" %}</span> <span class="badge bg-info-subtle text-info border border-info-subtle p-2"><i class="bi bi-speedometer2 me-1"></i>{% translate "Test de perméabilité" %}</span>
{% endif %} {% endif %}
{% if ouv.actions.inspection %} {% if ouv.actions.inspection or ouv.actions.inspection_camera %}
<span class="badge bg-primary-subtle text-primary border border-primary-subtle p-2"><i class="bi bi-search me-1"></i>{% translate "Inspection" %}</span> <span class="badge bg-primary-subtle text-primary border border-primary-subtle p-2"><i class="bi bi-search me-1"></i>{% translate "Inspection caméra" %}</span>
{% endif %} {% endif %}
</div> </div>
</div> </div>

View file

@ -515,13 +515,69 @@
} }
} }
// Liste des clés de questions où "Oui" représente une anomalie / dysfonctionnement
// et "Non" représente un bon fonctionnement (absence de défaut).
const GIEP_DEFECT_KEYS = new Set([
// EVC
'evc_pe_feuilles', // Des feuilles ou branches bloquent-elles l'eau ?
'evc_pe_detritus', // Un amas de détritus bloque-t-il l'eau ?
'evc_ev_chenaux_erosion', // Présence de chenaux d'érosion ?
'evc_ev_flaques', // Présence de flaques d'eau persistantes ?
'evc_ev_sediments', // Présence de sédiments dans l'ouvrage ?
'evc_ev_croute_sediments', // La croûte de sédimentation est-elle supérieure à 5 cm ?
'evc_ev_envahissantes', // Présence d'espèces exotiques envahissantes ?
// OED
'oed_bi_drain_colmate', // Le drain semble colmaté ?
'oed_rhm_stagne', // De l'eau stagne-t-elle en surface ?
'oed_rhm_stagne_plus_2h', // L'eau stagne plus de 2 heures ?
'oed_rhm_joints_fines', // Présence importante de fines dans les joints ?
'oed_rhm_joints_remplissage', // Niveau de remplissage plus haut que la structure ?
'oed_rp_stagne', // De l'eau stagne-t-elle en surface ?
'oed_rp_stagne_plus_2h', // L'eau stagne plus de 2 heures ?
'oed_rp_depots', // Présence de dépôts visibles (poussières, mousses, etc.) ?
'oed_rp_test_permeabilite', // Test de perméabilité nécessaire ?
'oed_rna_stagne', // De l'eau stagne-t-elle en surface ?
'oed_rna_stagne_plus_2h', // L'eau stagne plus de 2 heures ?
'oed_rna_geotextile_visible', // Le géotextile est-il visible ?
// TA
'ta_pe_feuilles', // Des feuilles ou branches bloquent-elles l'eau ?
'ta_pe_detritus', // Un amas de détritus bloque-t-il l'eau ?
'ta_bo_chenaux', // Présence de chenaux d'érosion ?
'ta_bo_flaques', // Présence de flaques d'eau persistantes ?
'ta_sediments', // Présence de sédiments dans l'ouvrage ?
'ta_sediments_rempli', // L'ouvrage est-il rempli au 5e de sa capacité ?
'ta_bo_detritus', // Présence de détritus dans l'ouvrage ?
'ta_bo_envahissantes' // Présence d'espèces exotiques envahissantes ?
]);
// Helper pour générer des boutons segmentés // Helper pour générer des boutons segmentés
function renderSegGroup(idx, qKey, label, currentVal, options) { function renderSegGroup(idx, qKey, label, currentVal, options) {
const opts = options || [ let opts;
const isDefect = (options === true || options === 'defect' || (!options && GIEP_DEFECT_KEYS.has(qKey)));
if (Array.isArray(options)) {
opts = options;
} else if (isDefect) {
// Pour les questions traduisant un dysfonctionnement / anomalie :
// "Oui" = Mauvais fonctionnement / Anomalie (Rouge)
// "Non" = Bon fonctionnement / Absence d'anomalie (Vert)
// "Non vérifié" = Neutre (Gris)
opts = [
{val: 'true', text: '{% filter escapejs %}{% translate "Oui" %}{% endfilter %}', activeClass: 'btn-danger', inactiveClass: 'btn-outline-danger'},
{val: 'false', text: '{% filter escapejs %}{% translate "Non" %}{% endfilter %}', activeClass: 'btn-success', inactiveClass: 'btn-outline-success'},
{val: 'null', text: '{% filter escapejs %}{% translate "Non vérifié" %}{% endfilter %}', activeClass: 'btn-secondary', inactiveClass: 'btn-outline-secondary'}
];
} else {
// Pour les questions traduisant un fonctionnement normal / bon état :
// "Oui" = Bon fonctionnement (Vert)
// "Non" = Mauvais fonctionnement (Rouge)
// "Non vérifié" = Neutre (Gris)
opts = [
{val: 'true', text: '{% filter escapejs %}{% translate "Oui" %}{% endfilter %}', activeClass: 'btn-success', inactiveClass: 'btn-outline-success'}, {val: 'true', text: '{% filter escapejs %}{% translate "Oui" %}{% endfilter %}', activeClass: 'btn-success', inactiveClass: 'btn-outline-success'},
{val: 'false', text: '{% filter escapejs %}{% translate "Non" %}{% endfilter %}', activeClass: 'btn-danger', inactiveClass: 'btn-outline-danger'}, {val: 'false', text: '{% filter escapejs %}{% translate "Non" %}{% endfilter %}', activeClass: 'btn-danger', inactiveClass: 'btn-outline-danger'},
{val: 'null', text: '{% filter escapejs %}{% translate "Non vérifié" %}{% endfilter %}', activeClass: 'btn-secondary', inactiveClass: 'btn-outline-secondary'} {val: 'null', text: '{% filter escapejs %}{% translate "Non vérifié" %}{% endfilter %}', activeClass: 'btn-secondary', inactiveClass: 'btn-outline-secondary'}
]; ];
}
let btnsHtml = opts.map(opt => { let btnsHtml = opts.map(opt => {
const isSelected = (currentVal === opt.val); const isSelected = (currentVal === opt.val);
@ -815,8 +871,8 @@
${renderSegGroup(idx, 'evc_pe_ok', '{% filter escapejs %}{% translate "L'eau peut-elle facilement entrer dans l'EVC ?" %}{% endfilter %}', q.evc_pe_ok)} ${renderSegGroup(idx, 'evc_pe_ok', '{% filter escapejs %}{% translate "L'eau peut-elle facilement entrer dans l'EVC ?" %}{% endfilter %}', q.evc_pe_ok)}
<div class="ps-3 border-start border-2 border-danger-subtle mt-2 ${q.evc_pe_ok === 'false' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mt-2 ${q.evc_pe_ok === 'false' ? '' : 'd-none'}">
${renderSegGroup(idx, 'evc_pe_feuilles', '{% filter escapejs %}{% translate "Des feuilles ou branches bloquent-elles l'eau ?" %}{% endfilter %}', q.evc_pe_feuilles)} ${renderSegGroup(idx, 'evc_pe_feuilles', '{% filter escapejs %}{% translate "Des feuilles ou branches bloquent-elles l'eau ?" %}{% endfilter %}', q.evc_pe_feuilles, true)}
${renderSegGroup(idx, 'evc_pe_detritus', '{% filter escapejs %}{% translate "Un amas de détritus bloque-t-il l'eau ?" %}{% endfilter %}', q.evc_pe_detritus)} ${renderSegGroup(idx, 'evc_pe_detritus', '{% filter escapejs %}{% translate "Un amas de détritus bloque-t-il l'eau ?" %}{% endfilter %}', q.evc_pe_detritus, true)}
</div> </div>
<!-- Empierrement switch --> <!-- Empierrement switch -->
@ -866,15 +922,15 @@
])} ])}
</div> </div>
${renderSegGroup(idx, 'evc_ev_chenaux_erosion', '{% filter escapejs %}{% translate "Présence de chenaux d'érosion ?" %}{% endfilter %}', q.evc_ev_chenaux_erosion)} ${renderSegGroup(idx, 'evc_ev_chenaux_erosion', '{% filter escapejs %}{% translate "Présence de chenaux d'érosion ?" %}{% endfilter %}', q.evc_ev_chenaux_erosion, true)}
${renderSegGroup(idx, 'evc_ev_flaques', '{% filter escapejs %}{% translate "Présence de flaques d'eau persistantes ?" %}{% endfilter %}', q.evc_ev_flaques)} ${renderSegGroup(idx, 'evc_ev_flaques', '{% filter escapejs %}{% translate "Présence de flaques d'eau persistantes ?" %}{% endfilter %}', q.evc_ev_flaques, true)}
${renderSegGroup(idx, 'evc_ev_sediments', '{% filter escapejs %}{% translate "Présence de sédiments dans l'ouvrage ?" %}{% endfilter %}', q.evc_ev_sediments)} ${renderSegGroup(idx, 'evc_ev_sediments', '{% filter escapejs %}{% translate "Présence de sédiments dans l'ouvrage ?" %}{% endfilter %}', q.evc_ev_sediments, true)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-3 ${q.evc_ev_sediments === 'true' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-3 ${q.evc_ev_sediments === 'true' ? '' : 'd-none'}">
${renderSegGroup(idx, 'evc_ev_croute_sediments', '{% filter escapejs %}{% translate "La croûte de sédimentation est-elle supérieure à 5 cm ?" %}{% endfilter %}', q.evc_ev_croute_sediments)} ${renderSegGroup(idx, 'evc_ev_croute_sediments', '{% filter escapejs %}{% translate "La croûte de sédimentation est-elle supérieure à 5 cm ?" %}{% endfilter %}', q.evc_ev_croute_sediments, true)}
</div> </div>
${renderSegGroup(idx, 'evc_ev_envahissantes', '{% filter escapejs %}{% translate "Présence d'espèces exotiques envahissantes ?" %}{% endfilter %}', q.evc_ev_envahissantes)} ${renderSegGroup(idx, 'evc_ev_envahissantes', '{% filter escapejs %}{% translate "Présence d'espèces exotiques envahissantes ?" %}{% endfilter %}', q.evc_ev_envahissantes, true)}
</div> </div>
<!-- EVC: Surverse / Trop-plein --> <!-- EVC: Surverse / Trop-plein -->
@ -941,7 +997,7 @@
${renderSegGroup(idx, 'oed_bi_filtre_bon', '{% filter escapejs %}{% translate "Le filtre est en bon état ?" %}{% endfilter %}', q.oed_bi_filtre_bon)} ${renderSegGroup(idx, 'oed_bi_filtre_bon', '{% filter escapejs %}{% translate "Le filtre est en bon état ?" %}{% endfilter %}', q.oed_bi_filtre_bon)}
</div> </div>
${renderSegGroup(idx, 'oed_bi_drain_colmate', '{% filter escapejs %}{% translate "Le drain semble colmaté ?" %}{% endfilter %}', q.oed_bi_drain_colmate)} ${renderSegGroup(idx, 'oed_bi_drain_colmate', '{% filter escapejs %}{% translate "Le drain semble colmaté ?" %}{% endfilter %}', q.oed_bi_drain_colmate, true)}
</div> </div>
</div> </div>
@ -958,17 +1014,17 @@
</label> </label>
</div> </div>
<div class="ps-3 border-start border-2 border-info-subtle mb-3 ${q.oed_rhm_presente ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-info-subtle mb-3 ${q.oed_rhm_presente ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rhm_stagne', '{% filter escapejs %}{% translate "De l'eau stagne-t-elle en surface ?" %}{% endfilter %}', q.oed_rhm_stagne)} ${renderSegGroup(idx, 'oed_rhm_stagne', '{% filter escapejs %}{% translate "De l'eau stagne-t-elle en surface ?" %}{% endfilter %}', q.oed_rhm_stagne, true)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rhm_stagne === 'true' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rhm_stagne === 'true' ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rhm_stagne_plus_2h', '{% filter escapejs %}{% translate "L'eau stagne plus de 2 heures ?" %}{% endfilter %}', q.oed_rhm_stagne_plus_2h)} ${renderSegGroup(idx, 'oed_rhm_stagne_plus_2h', '{% filter escapejs %}{% translate "L'eau stagne plus de 2 heures ?" %}{% endfilter %}', q.oed_rhm_stagne_plus_2h, true)}
</div> </div>
${renderSegGroup(idx, 'oed_rhm_joints_ok', '{% filter escapejs %}{% translate "Les joints sont-ils en bon état ?" %}{% endfilter %}', q.oed_rhm_joints_ok)} ${renderSegGroup(idx, 'oed_rhm_joints_ok', '{% filter escapejs %}{% translate "Les joints sont-ils en bon état ?" %}{% endfilter %}', q.oed_rhm_joints_ok)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rhm_joints_ok === 'false' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rhm_joints_ok === 'false' ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rhm_joints_fines', '{% filter escapejs %}{% translate "Présence importante de fines dans les joints ?" %}{% endfilter %}', q.oed_rhm_joints_fines)} ${renderSegGroup(idx, 'oed_rhm_joints_fines', '{% filter escapejs %}{% translate "Présence importante de fines dans les joints ?" %}{% endfilter %}', q.oed_rhm_joints_fines, true)}
${renderSegGroup(idx, 'oed_rhm_joints_remplissage', '{% filter escapejs %}{% translate "Niveau de remplissage plus haut que la structure ?" %}{% endfilter %}', q.oed_rhm_joints_remplissage)} ${renderSegGroup(idx, 'oed_rhm_joints_remplissage', '{% filter escapejs %}{% translate "Niveau de remplissage plus haut que la structure ?" %}{% endfilter %}', q.oed_rhm_joints_remplissage, true)}
</div> </div>
</div> </div>
@ -981,16 +1037,16 @@
</label> </label>
</div> </div>
<div class="ps-3 border-start border-2 border-info-subtle mb-3 ${q.oed_rp_presente ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-info-subtle mb-3 ${q.oed_rp_presente ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rp_stagne', '{% filter escapejs %}{% translate "De l'eau stagne-t-elle en surface ?" %}{% endfilter %}', q.oed_rp_stagne)} ${renderSegGroup(idx, 'oed_rp_stagne', '{% filter escapejs %}{% translate "De l'eau stagne-t-elle en surface ?" %}{% endfilter %}', q.oed_rp_stagne, true)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rp_stagne === 'true' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rp_stagne === 'true' ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rp_stagne_plus_2h', '{% filter escapejs %}{% translate "L'eau stagne plus de 2 heures ?" %}{% endfilter %}', q.oed_rp_stagne_plus_2h)} ${renderSegGroup(idx, 'oed_rp_stagne_plus_2h', '{% filter escapejs %}{% translate "L'eau stagne plus de 2 heures ?" %}{% endfilter %}', q.oed_rp_stagne_plus_2h, true)}
</div> </div>
${renderSegGroup(idx, 'oed_rp_depots', '{% filter escapejs %}{% translate "Présence de dépôts visibles (poussières, mousses, etc.) ?" %}{% endfilter %}', q.oed_rp_depots)} ${renderSegGroup(idx, 'oed_rp_depots', '{% filter escapejs %}{% translate "Présence de dépôts visibles (poussières, mousses, etc.) ?" %}{% endfilter %}', q.oed_rp_depots, true)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rp_depots === 'true' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rp_depots === 'true' ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rp_test_permeabilite', '{% filter escapejs %}{% translate "Test de perméabilité nécessaire ?" %}{% endfilter %}', q.oed_rp_test_permeabilite)} ${renderSegGroup(idx, 'oed_rp_test_permeabilite', '{% filter escapejs %}{% translate "Test de perméabilité nécessaire ?" %}{% endfilter %}', q.oed_rp_test_permeabilite, true)}
</div> </div>
</div> </div>
@ -1003,16 +1059,16 @@
</label> </label>
</div> </div>
<div class="ps-3 border-start border-2 border-info-subtle mt-2 ${q.oed_rna_presente ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-info-subtle mt-2 ${q.oed_rna_presente ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rna_stagne', '{% filter escapejs %}{% translate "De l'eau stagne-t-elle en surface ?" %}{% endfilter %}', q.oed_rna_stagne)} ${renderSegGroup(idx, 'oed_rna_stagne', '{% filter escapejs %}{% translate "De l'eau stagne-t-elle en surface ?" %}{% endfilter %}', q.oed_rna_stagne, true)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rna_stagne === 'true' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rna_stagne === 'true' ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rna_stagne_plus_2h', '{% filter escapejs %}{% translate "L'eau stagne plus de 2 heures ?" %}{% endfilter %}', q.oed_rna_stagne_plus_2h)} ${renderSegGroup(idx, 'oed_rna_stagne_plus_2h', '{% filter escapejs %}{% translate "L'eau stagne plus de 2 heures ?" %}{% endfilter %}', q.oed_rna_stagne_plus_2h, true)}
</div> </div>
${renderSegGroup(idx, 'oed_rna_matiere_ok', '{% filter escapejs %}{% translate "Le volume de matière est-il en suffisance ?" %}{% endfilter %}', q.oed_rna_matiere_ok)} ${renderSegGroup(idx, 'oed_rna_matiere_ok', '{% filter escapejs %}{% translate "Le volume de matière est-il en suffisance ?" %}{% endfilter %}', q.oed_rna_matiere_ok)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rna_matiere_ok === 'false' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.oed_rna_matiere_ok === 'false' ? '' : 'd-none'}">
${renderSegGroup(idx, 'oed_rna_geotextile_visible', '{% filter escapejs %}{% translate "Le géotextile est-il visible ?" %}{% endfilter %}', q.oed_rna_geotextile_visible)} ${renderSegGroup(idx, 'oed_rna_geotextile_visible', '{% filter escapejs %}{% translate "Le géotextile est-il visible ?" %}{% endfilter %}', q.oed_rna_geotextile_visible, true)}
</div> </div>
</div> </div>
</div> </div>
@ -1030,8 +1086,8 @@
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.ta_pe_conduits_ok === 'false' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.ta_pe_conduits_ok === 'false' ? '' : 'd-none'}">
${renderSegGroup(idx, 'ta_pe_grilles', '{% filter escapejs %}{% translate "Les grilles sont-elles propres et dégagées ?" %}{% endfilter %}', q.ta_pe_grilles)} ${renderSegGroup(idx, 'ta_pe_grilles', '{% filter escapejs %}{% translate "Les grilles sont-elles propres et dégagées ?" %}{% endfilter %}', q.ta_pe_grilles)}
${renderSegGroup(idx, 'ta_pe_feuilles', '{% filter escapejs %}{% translate "Des feuilles ou branches bloquent-elles l'eau ?" %}{% endfilter %}', q.ta_pe_feuilles)} ${renderSegGroup(idx, 'ta_pe_feuilles', '{% filter escapejs %}{% translate "Des feuilles ou branches bloquent-elles l'eau ?" %}{% endfilter %}', q.ta_pe_feuilles, true)}
${renderSegGroup(idx, 'ta_pe_detritus', '{% filter escapejs %}{% translate "Un amas de détritus bloque-t-il l'eau ?" %}{% endfilter %}', q.ta_pe_detritus)} ${renderSegGroup(idx, 'ta_pe_detritus', '{% filter escapejs %}{% translate "Un amas de détritus bloque-t-il l'eau ?" %}{% endfilter %}', q.ta_pe_detritus, true)}
</div> </div>
</div> </div>
@ -1053,16 +1109,16 @@
])} ])}
</div> </div>
${renderSegGroup(idx, 'ta_bo_chenaux', '{% filter escapejs %}{% translate "Présence de chenaux d'érosion ?" %}{% endfilter %}', q.ta_bo_chenaux)} ${renderSegGroup(idx, 'ta_bo_chenaux', '{% filter escapejs %}{% translate "Présence de chenaux d'érosion ?" %}{% endfilter %}', q.ta_bo_chenaux, true)}
${renderSegGroup(idx, 'ta_bo_flaques', '{% filter escapejs %}{% translate "Présence de flaques d'eau persistantes ?" %}{% endfilter %}', q.ta_bo_flaques)} ${renderSegGroup(idx, 'ta_bo_flaques', '{% filter escapejs %}{% translate "Présence de flaques d'eau persistantes ?" %}{% endfilter %}', q.ta_bo_flaques, true)}
${renderSegGroup(idx, 'ta_sediments', '{% filter escapejs %}{% translate "Présence de sédiments dans l'ouvrage ?" %}{% endfilter %}', q.ta_sediments)} ${renderSegGroup(idx, 'ta_sediments', '{% filter escapejs %}{% translate "Présence de sédiments dans l'ouvrage ?" %}{% endfilter %}', q.ta_sediments, true)}
<div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.ta_sediments === 'true' ? '' : 'd-none'}"> <div class="ps-3 border-start border-2 border-danger-subtle mb-2 ${q.ta_sediments === 'true' ? '' : 'd-none'}">
${renderSegGroup(idx, 'ta_sediments_rempli', '{% filter escapejs %}{% translate "L'ouvrage est-il rempli au 5e de sa capacité ?" %}{% endfilter %}', q.ta_sediments_rempli)} ${renderSegGroup(idx, 'ta_sediments_rempli', '{% filter escapejs %}{% translate "L'ouvrage est-il rempli au 5e de sa capacité ?" %}{% endfilter %}', q.ta_sediments_rempli, true)}
</div> </div>
${renderSegGroup(idx, 'ta_bo_detritus', '{% filter escapejs %}{% translate "Présence de détritus dans l'ouvrage ?" %}{% endfilter %}', q.ta_bo_detritus)} ${renderSegGroup(idx, 'ta_bo_detritus', '{% filter escapejs %}{% translate "Présence de détritus dans l'ouvrage ?" %}{% endfilter %}', q.ta_bo_detritus, true)}
${renderSegGroup(idx, 'ta_bo_envahissantes', '{% filter escapejs %}{% translate "Présence d'espèces exotiques envahissantes ?" %}{% endfilter %}', q.ta_bo_envahissantes)} ${renderSegGroup(idx, 'ta_bo_envahissantes', '{% filter escapejs %}{% translate "Présence d'espèces exotiques envahissantes ?" %}{% endfilter %}', q.ta_bo_envahissantes, true)}
</div> </div>
`; `;
} }
@ -1145,8 +1201,8 @@
<label class="form-check-label extra-small" for="act_auc_${idx}">{% translate "Aucune" %}</label> <label class="form-check-label extra-small" for="act_auc_${idx}">{% translate "Aucune" %}</label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input action-check" type="checkbox" data-idx="${idx}" data-act="interventions_preventives" id="act_prev_${idx}" ${act.interventions_preventives ? 'checked' : ''}> <input class="form-check-input action-check" type="checkbox" data-idx="${idx}" data-act="interventions_preventives" id="act_prev_${idx}" ${act.interventions_preventives || act.renforcement_preventif ? 'checked' : ''}>
<label class="form-check-label extra-small" for="act_prev_${idx}">{% translate "Interventions préventives" %}</label> <label class="form-check-label extra-small" for="act_prev_${idx}">{% translate "Renforcement de l’entretien préventif" %}</label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input action-check" type="checkbox" data-idx="${idx}" data-act="entretien_curatif" id="act_cur_${idx}" ${act.entretien_curatif ? 'checked' : ''}> <input class="form-check-input action-check" type="checkbox" data-idx="${idx}" data-act="entretien_curatif" id="act_cur_${idx}" ${act.entretien_curatif ? 'checked' : ''}>
@ -1157,8 +1213,8 @@
<label class="form-check-label extra-small" for="act_perm_${idx}">{% translate "Test de perméabilité" %}</label> <label class="form-check-label extra-small" for="act_perm_${idx}">{% translate "Test de perméabilité" %}</label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input action-check" type="checkbox" data-idx="${idx}" data-act="inspection" id="act_insp_${idx}" ${act.inspection ? 'checked' : ''}> <input class="form-check-input action-check" type="checkbox" data-idx="${idx}" data-act="inspection" id="act_insp_${idx}" ${act.inspection || act.inspection_camera ? 'checked' : ''}>
<label class="form-check-label extra-small" for="act_insp_${idx}">{% translate "Inspection" %}</label> <label class="form-check-label extra-small" for="act_insp_${idx}">{% translate "Inspection caméra" %}</label>
</div> </div>
</div> </div>
</div> </div>

View file

@ -124,7 +124,9 @@ def format_giep_q_val(val):
def get_q_val(questions_dict, key): def get_q_val(questions_dict, key):
if not isinstance(questions_dict, dict): if not isinstance(questions_dict, dict):
return 'null' return 'null'
val = questions_dict.get(str(key)) keys = [k.strip() for k in str(key).split(',')]
if val is None or val == '' or val == 'null': for k in keys:
return 'null' val = questions_dict.get(k)
if val is not None and val != '' and val != 'null':
return val return val
return 'null'