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"
msgstr "Inspections GIEP / Eaux pluviales"
#: inspections/models.py:555
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1064
#: inspections/models.py:641
msgid "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
msgid "Clé de question / Média"
msgstr ""
@ -503,7 +506,13 @@ msgid "Aucune"
msgstr "None"
#: 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"
msgstr "Preventive maintenance"

View file

@ -283,12 +283,15 @@ msgstr "Inspection GIEP / Eaux pluviales"
msgid "Inspections GIEP / Eaux pluviales"
msgstr "Inspections GIEP / Eaux pluviales"
#: inspections/models.py:555
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1064
#: inspections/models.py:641
msgid "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
msgid "Clé de question / Média"
msgstr "Clé de question / Média"
@ -505,7 +508,13 @@ msgid "Aucune"
msgstr "Aucune"
#: 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"
msgstr "Interventions préventives"

View file

@ -283,12 +283,15 @@ msgstr ""
msgid "Inspections GIEP / Eaux pluviales"
msgstr ""
#: inspections/models.py:555
#: inspections/templates/inspections/components/asset_details/_naturerwiz.html:339
#: inspections/templates/inspections/components/asset_fields/_naturerwiz.html:1064
#: inspections/models.py:641
msgid "Inspection"
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
msgid "Clé de question / Média"
msgstr ""
@ -503,7 +506,13 @@ msgid "Aucune"
msgstr "Geen"
#: 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"
msgstr "Preventief onderhoud"

View file

@ -302,7 +302,7 @@
</div>
{% 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 %}">
<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">
@ -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>
{% endif %}
{% 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 %}
{% 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>
@ -335,8 +335,8 @@
{% 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>
{% endif %}
{% if ouv.actions.inspection %}
<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>
{% 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 caméra" %}</span>
{% endif %}
</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
function renderSegGroup(idx, qKey, label, currentVal, options) {
const opts = options || [
{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: 'null', text: '{% filter escapejs %}{% translate "Non vérifié" %}{% endfilter %}', activeClass: 'btn-secondary', inactiveClass: 'btn-outline-secondary'}
];
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: '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'}
];
}
let btnsHtml = opts.map(opt => {
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)}
<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_detritus', '{% filter escapejs %}{% translate "Un amas de détritus bloque-t-il l'eau ?" %}{% endfilter %}', q.evc_pe_detritus)}
${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, true)}
</div>
<!-- Empierrement switch -->
@ -866,15 +922,15 @@
])}
</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_flaques', '{% filter escapejs %}{% translate "Présence de flaques d'eau persistantes ?" %}{% endfilter %}', q.evc_ev_flaques)}
${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_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, true)}
${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'}">
${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>
${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>
<!-- 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)}
</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>
@ -958,17 +1014,17 @@
</label>
</div>
<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'}">
${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>
${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'}">
${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_remplissage', '{% filter escapejs %}{% translate "Niveau de remplissage plus haut que la structure ?" %}{% endfilter %}', q.oed_rhm_joints_remplissage)}
${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, true)}
</div>
</div>
@ -981,16 +1037,16 @@
</label>
</div>
<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'}">
${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>
${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'}">
${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>
@ -1003,16 +1059,16 @@
</label>
</div>
<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'}">
${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>
${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'}">
${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>
@ -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'}">
${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_detritus', '{% filter escapejs %}{% translate "Un amas de détritus bloque-t-il l'eau ?" %}{% endfilter %}', q.ta_pe_detritus)}
${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, true)}
</div>
</div>
@ -1053,16 +1109,16 @@
])}
</div>
${renderSegGroup(idx, 'ta_bo_chenaux', '{% filter escapejs %}{% translate "Présence de chenaux d'érosion ?" %}{% endfilter %}', q.ta_bo_chenaux)}
${renderSegGroup(idx, 'ta_bo_flaques', '{% filter escapejs %}{% translate "Présence de flaques d'eau persistantes ?" %}{% endfilter %}', q.ta_bo_flaques)}
${renderSegGroup(idx, 'ta_sediments', '{% filter escapejs %}{% translate "Présence de sédiments dans l'ouvrage ?" %}{% endfilter %}', q.ta_sediments)}
${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, true)}
${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'}">
${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>
${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_envahissantes', '{% filter escapejs %}{% translate "Présence d'espèces exotiques envahissantes ?" %}{% endfilter %}', q.ta_bo_envahissantes)}
${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, true)}
</div>
`;
}
@ -1145,8 +1201,8 @@
<label class="form-check-label extra-small" for="act_auc_${idx}">{% translate "Aucune" %}</label>
</div>
<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' : ''}>
<label class="form-check-label extra-small" for="act_prev_${idx}">{% translate "Interventions préventives" %}</label>
<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 "Renforcement de l’entretien préventif" %}</label>
</div>
<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' : ''}>
@ -1157,8 +1213,8 @@
<label class="form-check-label extra-small" for="act_perm_${idx}">{% translate "Test de perméabilité" %}</label>
</div>
<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' : ''}>
<label class="form-check-label extra-small" for="act_insp_${idx}">{% translate "Inspection" %}</label>
<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 caméra" %}</label>
</div>
</div>
</div>

View file

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