From 8e8614a7ccab49dde04a67bbbdcdf2f3e15fff16 Mon Sep 17 00:00:00 2001
From: alan
Date: Tue, 12 Nov 2024 16:54:47 +0100
Subject: [PATCH] =?UTF-8?q?D=C3=A9placement=20du=20champ=20vegetaux=5Finfe?=
=?UTF-8?q?stes=20dans=20mod=C3=A8le=20FicheDetection?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- suppression du champ dans le modèle FicheZoneDelimitee et sa référence dans les templates et tests
- ajout du champ dans le modèle FicheDetection
- ajout dans les templates de création et modification de la fiche détection
- modification des tests e2e (create et update) de la fiche détection
---
...onedelimitee_vegetaux_infestes_and_more.py | 21 +++++++++++++++++
sv/models.py | 2 +-
sv/static/sv/fichedetection_form.js | 23 +++++++++++--------
sv/templates/sv/fichedetection_detail.html | 5 ++++
sv/templates/sv/fichedetection_form.html | 5 ++++
.../sv/fichezonedelimitee_detail.html | 4 ----
sv/templates/sv/fichezonedelimitee_form.html | 4 ----
sv/tests/test_fichedetection_create.py | 7 ++++++
sv/tests/test_fichedetection_update.py | 6 +++++
sv/tests/test_fichezonedelimitee_create.py | 2 --
sv/tests/test_utils.py | 10 ++++++--
sv/views.py | 2 ++
12 files changed, 68 insertions(+), 23 deletions(-)
create mode 100644 sv/migrations/0032_remove_fichezonedelimitee_vegetaux_infestes_and_more.py
diff --git a/sv/migrations/0032_remove_fichezonedelimitee_vegetaux_infestes_and_more.py b/sv/migrations/0032_remove_fichezonedelimitee_vegetaux_infestes_and_more.py
new file mode 100644
index 00000000..f22b9d03
--- /dev/null
+++ b/sv/migrations/0032_remove_fichezonedelimitee_vegetaux_infestes_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 5.0.8 on 2024-11-14 08:18
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("sv", "0031_fichezonedelimitee_etat"),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name="fichezonedelimitee",
+ name="vegetaux_infestes",
+ ),
+ migrations.AddField(
+ model_name="fichedetection",
+ name="vegetaux_infestes",
+ field=models.TextField(blank=True, verbose_name="Nombre ou volume de végétaux infestés"),
+ ),
+ ]
diff --git a/sv/models.py b/sv/models.py
index eba12afd..3d772ed4 100644
--- a/sv/models.py
+++ b/sv/models.py
@@ -494,6 +494,7 @@ class Meta:
fin_suivi = GenericRelation(FinSuiviContact)
hors_zone_infestee = models.ForeignKey("FicheZoneDelimitee", on_delete=models.SET_NULL, null=True, blank=True)
zone_infestee = models.ForeignKey("ZoneInfestee", on_delete=models.SET_NULL, null=True, blank=True)
+ vegetaux_infestes = models.TextField(verbose_name="Nombre ou volume de végétaux infestés", blank=True)
objects = FicheDetectionManager()
@@ -641,7 +642,6 @@ class Meta:
verbose_name="Caractéristiques principales de la zone délimitée",
blank=True,
)
- vegetaux_infestes = models.TextField(verbose_name="Nombre ou volume de végétaux infestés", blank=True)
commentaire = models.TextField(verbose_name="Commentaire", blank=True)
rayon_zone_tampon = models.FloatField(verbose_name="Rayon tampon réglementaire ou arbitré", null=True, blank=True)
unite_rayon_zone_tampon = models.CharField(
diff --git a/sv/static/sv/fichedetection_form.js b/sv/static/sv/fichedetection_form.js
index d653f059..7ee8c262 100644
--- a/sv/static/sv/fichedetection_form.js
+++ b/sv/static/sv/fichedetection_form.js
@@ -32,15 +32,15 @@ function fetchEspecesEchantillon(query) {
}
function addChoicesEspeceEchantillon(){
const choicesEspece = new Choices(document.getElementById('espece-echantillon-input'), {
- removeItemButton: true,
- placeholderValue: 'Recherchez...',
- noResultsText: 'Aucun résultat trouvé',
- noChoicesText: 'Aucun résultat trouvé',
- shouldSort: false,
- searchResultLimit: 50,
- classNames: {containerInner: 'fr-select'},
- itemSelectText: '',
- });
+ removeItemButton: true,
+ placeholderValue: 'Recherchez...',
+ noResultsText: 'Aucun résultat trouvé',
+ noChoicesText: 'Aucun résultat trouvé',
+ shouldSort: false,
+ searchResultLimit: 50,
+ classNames: {containerInner: 'fr-select'},
+ itemSelectText: '',
+ });
choicesEspece.input.element.addEventListener('input', function (event) {
const query = choicesEspece.input.element.value
@@ -97,6 +97,7 @@ document.addEventListener('alpine:init', () => {
contexteId: '',
datePremierSignalement: '',
commentaire: '',
+ vegetauxInfestes: '',
mesuresConservatoiresImmediates: '',
mesuresConsignation: '',
mesuresPhytosanitaires: '',
@@ -200,6 +201,7 @@ document.addEventListener('alpine:init', () => {
contexteId: this.getValueById('contexte-id'),
datePremierSignalement: this.getValueById('date-premier-signalement'),
commentaire: this.getValueById('commentaire'),
+ vegetauxInfestes: this.getValueById('vegetaux-infestes'),
mesuresConservatoiresImmediates: this.getValueById('mesures-conservatoires-immediates'),
mesuresConsignation: this.getValueById('mesures-consignation'),
mesuresPhytosanitaires: this.getValueById('mesures-phytosanitaires'),
@@ -462,7 +464,7 @@ document.addEventListener('alpine:init', () => {
this.choicesEspeceEdit = addChoicesEspeceEchantillon()
this.choicesEspeceEdit.passedElement.element.addEventListener("choice", (event) => {
- this.formPrelevement.especeEchantillonId = event.detail.choice.value
+ this.formPrelevement.especeEchantillonId = event.detail.choice.value
})
this.choicesEspeceEdit.setChoices([{
value: prelevementToEdit.especeEchantillonId,
@@ -597,6 +599,7 @@ document.addEventListener('alpine:init', () => {
formData.append('contexteId', this.ficheDetection.contexteId);
formData.append('datePremierSignalement', this.ficheDetection.datePremierSignalement);
formData.append('commentaire', this.ficheDetection.commentaire);
+ formData.append('vegetauxInfestes', this.ficheDetection.vegetauxInfestes);
formData.append('mesuresConservatoiresImmediates', this.ficheDetection.mesuresConservatoiresImmediates);
formData.append('mesuresConsignation', this.ficheDetection.mesuresConsignation);
formData.append('mesuresPhytosanitaires', this.ficheDetection.mesuresPhytosanitaires);
diff --git a/sv/templates/sv/fichedetection_detail.html b/sv/templates/sv/fichedetection_detail.html
index bba66d71..e3dec928 100644
--- a/sv/templates/sv/fichedetection_detail.html
+++ b/sv/templates/sv/fichedetection_detail.html
@@ -106,6 +106,11 @@ Objet de l'évènement
Commentaire
{{ fichedetection.commentaire|default:"nc." }}
+
+
Végétaux inféstés
+
{{ fichedetection.vegetaux_infestes|default:"nc." }}
+
+
diff --git a/sv/templates/sv/fichedetection_form.html b/sv/templates/sv/fichedetection_form.html
index d9e1aac1..5b3946f5 100644
--- a/sv/templates/sv/fichedetection_form.html
+++ b/sv/templates/sv/fichedetection_form.html
@@ -29,6 +29,7 @@
+
@@ -140,6 +141,10 @@ Objet de l'évènement
+
+
+
+
diff --git a/sv/templates/sv/fichezonedelimitee_detail.html b/sv/templates/sv/fichezonedelimitee_detail.html
index a7cd8ae3..20fe28a8 100644
--- a/sv/templates/sv/fichezonedelimitee_detail.html
+++ b/sv/templates/sv/fichezonedelimitee_detail.html
@@ -71,10 +71,6 @@
Détails
Caracteristiques
{{ fiche.get_caracteristiques_principales_zone_delimitee_display|default:"nc." }}
-
-
Vegetaux infestes
-
{{ fiche.vegetaux_infestes|default:"nc." }}
-
Commentaire
{{ fiche.commentaire|default:"nc." }}
diff --git a/sv/templates/sv/fichezonedelimitee_form.html b/sv/templates/sv/fichezonedelimitee_form.html
index 1d70ee6c..35f5f790 100644
--- a/sv/templates/sv/fichezonedelimitee_form.html
+++ b/sv/templates/sv/fichezonedelimitee_form.html
@@ -65,10 +65,6 @@
Détails
{{ form.caracteristiques_principales_zone_delimitee.label_tag }}
{{ form.caracteristiques_principales_zone_delimitee }}
-
-
{{ form.vegetaux_infestes.label_tag }}
- {{ form.vegetaux_infestes }}
-
{{ form.commentaire.label_tag }}
{{ form.commentaire }}
diff --git a/sv/tests/test_fichedetection_create.py b/sv/tests/test_fichedetection_create.py
index 83f90a01..5f72aa43 100644
--- a/sv/tests/test_fichedetection_create.py
+++ b/sv/tests/test_fichedetection_create.py
@@ -106,6 +106,10 @@ def test_new_fiche_detection_form_content(live_server, page: Page, form_elements
expect(form_elements.commentaire_input).to_be_visible()
expect(form_elements.commentaire_input).to_be_empty()
+ expect(form_elements.vegetaux_infestes_label).to_be_visible()
+ expect(form_elements.vegetaux_infestes_input).to_be_visible()
+ expect(form_elements.vegetaux_infestes_input).to_be_empty()
+
expect(form_elements.mesures_conservatoires_immediates_label).to_be_visible()
expect(form_elements.mesures_conservatoires_immediates_input).to_be_visible()
expect(form_elements.mesures_conservatoires_immediates_input).to_be_empty()
@@ -149,6 +153,8 @@ def test_fiche_detection_create_without_lieux_and_prelevement(
page.get_by_label("Date 1er signalement").fill("2024-04-21")
page.get_by_label("Commentaire").click()
page.get_by_label("Commentaire").fill("test commentaire")
+ page.get_by_label("Végétaux inféstés").click()
+ page.get_by_label("Végétaux inféstés").fill("3 citronniers")
page.get_by_label("Mesures conservatoires immé").click()
page.get_by_label("Mesures conservatoires immé").fill("test mesures conservatoires")
page.get_by_label("Mesures de consignation").click()
@@ -169,6 +175,7 @@ def test_fiche_detection_create_without_lieux_and_prelevement(
assert fiche_detection.contexte.id == contexte.id
assert fiche_detection.date_premier_signalement.strftime("%Y-%m-%d") == "2024-04-21"
assert fiche_detection.commentaire == "test commentaire"
+ assert fiche_detection.vegetaux_infestes == "3 citronniers"
assert fiche_detection.mesures_conservatoires_immediates == "test mesures conservatoires"
assert fiche_detection.mesures_consignation == "test mesures consignation"
assert fiche_detection.mesures_phytosanitaires == "test mesures phyto"
diff --git a/sv/tests/test_fichedetection_update.py b/sv/tests/test_fichedetection_update.py
index b8875ec7..f56476bd 100644
--- a/sv/tests/test_fichedetection_update.py
+++ b/sv/tests/test_fichedetection_update.py
@@ -97,6 +97,9 @@ def test_fiche_detection_update_page_content(
# Commentaire
expect(form_elements.commentaire_input).to_have_value(fiche_detection.commentaire)
+ # Végétaux inféstés
+ expect(form_elements.vegetaux_infestes_input).to_have_value(fiche_detection.vegetaux_infestes)
+
# Mesures conservatoires immédiates
expect(form_elements.mesures_conservatoires_immediates_input).to_have_value(
fiche_detection.mesures_conservatoires_immediates
@@ -135,6 +138,7 @@ def test_fiche_detection_update_page_content_with_no_data(
expect(form_elements.contexte_input).to_have_value("")
expect(form_elements.date_1er_signalement_input).to_have_value("")
expect(form_elements.commentaire_input).to_have_value("")
+ expect(form_elements.vegetaux_infestes_input).to_have_value("")
expect(form_elements.mesures_conservatoires_immediates_input).to_have_value("")
expect(form_elements.mesures_consignation_input).to_have_value("")
expect(form_elements.mesures_phytosanitaires_input).to_have_value("")
@@ -166,6 +170,7 @@ def test_fiche_detection_update_without_lieux_and_prelevement(
form_elements.contexte_input.select_option(str(new_fiche_detection.contexte.id))
form_elements.date_1er_signalement_input.fill(new_fiche_detection.date_premier_signalement.strftime("%Y-%m-%d"))
form_elements.commentaire_input.fill(new_fiche_detection.commentaire)
+ form_elements.vegetaux_infestes_input.fill(new_fiche_detection.vegetaux_infestes)
form_elements.mesures_conservatoires_immediates_input.fill(new_fiche_detection.mesures_conservatoires_immediates)
form_elements.mesures_consignation_input.fill(new_fiche_detection.mesures_consignation)
form_elements.mesures_phytosanitaires_input.fill(new_fiche_detection.mesures_phytosanitaires)
@@ -182,6 +187,7 @@ def test_fiche_detection_update_without_lieux_and_prelevement(
assert fiche_detection_updated.statut_reglementaire == new_fiche_detection.statut_reglementaire
assert fiche_detection_updated.contexte == new_fiche_detection.contexte
assert fiche_detection_updated.commentaire == new_fiche_detection.commentaire
+ assert fiche_detection_updated.vegetaux_infestes == new_fiche_detection.vegetaux_infestes
assert (
fiche_detection_updated.mesures_conservatoires_immediates
== new_fiche_detection.mesures_conservatoires_immediates
diff --git a/sv/tests/test_fichezonedelimitee_create.py b/sv/tests/test_fichezonedelimitee_create.py
index ea11cb8d..46e262f5 100644
--- a/sv/tests/test_fichezonedelimitee_create.py
+++ b/sv/tests/test_fichezonedelimitee_create.py
@@ -126,7 +126,6 @@ def test_can_create_fiche_zone_delimitee_without_zone_infestee(
assert (
fiche_from_db.caracteristiques_principales_zone_delimitee == fiche.caracteristiques_principales_zone_delimitee
)
- assert fiche_from_db.vegetaux_infestes == fiche.vegetaux_infestes
assert fiche_from_db.commentaire == fiche.commentaire
assert fiche_from_db.rayon_zone_tampon == fiche.rayon_zone_tampon
assert fiche_from_db.unite_rayon_zone_tampon == fiche.unite_rayon_zone_tampon
@@ -192,7 +191,6 @@ def test_can_create_fiche_zone_delimitee_with_2_zones_infestees(
assert (
fiche_from_db.caracteristiques_principales_zone_delimitee == fiche.caracteristiques_principales_zone_delimitee
)
- assert fiche_from_db.vegetaux_infestes == fiche.vegetaux_infestes
assert fiche_from_db.commentaire == fiche.commentaire
assert fiche_from_db.rayon_zone_tampon == fiche.rayon_zone_tampon
assert fiche_from_db.unite_rayon_zone_tampon == fiche.unite_rayon_zone_tampon
diff --git a/sv/tests/test_utils.py b/sv/tests/test_utils.py
index 2d82b45b..09d202ae 100644
--- a/sv/tests/test_utils.py
+++ b/sv/tests/test_utils.py
@@ -130,6 +130,14 @@ def commentaire_label(self) -> Locator:
def commentaire_input(self) -> Locator:
return self.page.get_by_label("Commentaire")
+ @property
+ def vegetaux_infestes_label(self) -> Locator:
+ return self.page.get_by_text("Végétaux inféstés")
+
+ @property
+ def vegetaux_infestes_input(self) -> Locator:
+ return self.page.get_by_label("Végétaux inféstés")
+
@property
def mesures_conservatoires_immediates_label(self) -> Locator:
return self.page.get_by_text("Mesures conservatoires immédiates")
@@ -473,7 +481,6 @@ def __init__(self, page: Page, choice_js_fill):
# Détails
self.caracteristiques = page.get_by_label("Caractéristiques")
- self.vegetaux_infestes = page.get_by_label("Nombre ou volume de végétaux infestés")
self.commentaire = page.get_by_label("Commentaire")
# Zone tampon
@@ -658,7 +665,6 @@ def fill_form(
):
detections_zone_infestee = detections_zone_infestee or ()
self.caracteristiques.select_option(fiche_zone_delimitee.caracteristiques_principales_zone_delimitee)
- self.vegetaux_infestes.fill(fiche_zone_delimitee.vegetaux_infestes)
self.commentaire.fill(fiche_zone_delimitee.commentaire)
self.rayon_zone_tampon.fill(str(fiche_zone_delimitee.rayon_zone_tampon))
self._select_unite_rayon_zone_tampon(fiche_zone_delimitee.unite_rayon_zone_tampon)
diff --git a/sv/views.py b/sv/views.py
index 1254e224..7e4cdfd9 100644
--- a/sv/views.py
+++ b/sv/views.py
@@ -340,6 +340,7 @@ def create_fiche_detection(self, data, user_structure):
contexte_id=data["contexteId"],
date_premier_signalement=date_premier_signalement,
commentaire=data["commentaire"],
+ vegetaux_infestes=data["vegetauxInfestes"],
mesures_conservatoires_immediates=data["mesuresConservatoiresImmediates"],
mesures_consignation=data["mesuresConsignation"],
mesures_phytosanitaires=data["mesuresPhytosanitaires"],
@@ -502,6 +503,7 @@ def update_fiche_detection(self, data, fiche_detection):
fiche_detection.contexte_id = data.get("contexteId")
fiche_detection.date_premier_signalement = date_premier_signalement
fiche_detection.commentaire = data.get("commentaire")
+ fiche_detection.vegetaux_infestes = data.get("vegetauxInfestes")
fiche_detection.mesures_conservatoires_immediates = data.get("mesuresConservatoiresImmediates")
fiche_detection.mesures_consignation = data.get("mesuresConsignation")
fiche_detection.mesures_phytosanitaires = data.get("mesuresPhytosanitaires")