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")