Skip to content

Commit

Permalink
Si la fiche détection est liée à une fiche zone délimitée, ajout d'un…
Browse files Browse the repository at this point in the history
… lien vers celle-ci
  • Loading branch information
alanzirek committed Oct 31, 2024
1 parent aff3f33 commit d7ba49b
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 2 deletions.
3 changes: 3 additions & 0 deletions sv/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,6 @@ def optimized_for_details(self):

def get_all_not_in_fiche_zone_delimitee(self):
return self.filter(zone_infestee__isnull=True, hors_zone_infestee__isnull=True).order_by("numero")

def with_fiche_zone_delimitee_numero(self):
return self.select_related("hors_zone_infestee__numero", "zone_infestee__fiche_zone_delimitee__numero")
6 changes: 6 additions & 0 deletions sv/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,12 @@ def can_user_access(self, user):
def is_linked_to_fiche_zone_delimitee(self):
return self.hors_zone_infestee is not None or self.zone_infestee is not None

def get_fiche_zone_delimitee(self) -> "FicheZoneDelimitee":
if self.hors_zone_infestee:
return self.hors_zone_infestee
if self.zone_infestee and self.zone_infestee.fiche_zone_delimitee:
return self.zone_infestee.fiche_zone_delimitee


class ZoneInfestee(models.Model):
class UnitesSurfaceInfesteeTotale(TextChoices):
Expand Down
3 changes: 3 additions & 0 deletions sv/templates/sv/fichedetection_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ <h1 class="fiche-header__title">Fiche détection n° {{ fichedetection.numero }}
<p class="fr-badge fr-ml-2w"><span class="fr-icon-notification-3-line fr-mr-2v fr-icon--sm" aria-hidden="true"></span> Déclaré AC</p>
{% endif %}
<p class="fr-badge fr-badge--no-icon">{{ fichedetection.visibilite }}</p>
{% if fiche_zone_delimitee %}
<a href="{{ fiche_zone_delimitee.get_absolute_url }}" class="fr-badge fr-badge--info fr-badge--no-icon">zone {{ fiche_zone_delimitee.numero }}</a>
{% endif %}
</div>

<p>
Expand Down
25 changes: 24 additions & 1 deletion sv/tests/test_fichedetection_detail.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from sv.models import Lieu, Prelevement
from sv.models import Lieu, Prelevement, FicheZoneDelimitee, ZoneInfestee
from model_bakery import baker
from playwright.sync_api import expect

Expand Down Expand Up @@ -157,3 +157,26 @@ def test_prelevement_officiel_details(live_server, page, fiche_detection):
expect(page.get_by_test_id("prelevement-1-laboratoire-confirmation-officielle")).to_contain_text(
prelevement.laboratoire_confirmation_officielle.nom
)


def test_have_link_to_fiche_zone_delimitee_if_hors_zone_infestee(live_server, page, fiche_detection):
"Si une fiche détection est liée à une hors zone infestée d'une fiche zone délimitée, un lien vers cette fiche zone délimitée doit être présent"
fiche_zone_delimitee = baker.make(FicheZoneDelimitee)
fiche_detection.hors_zone_infestee = fiche_zone_delimitee
fiche_detection.save()
page.goto(f"{live_server.url}{fiche_detection.get_absolute_url()}")
link = page.get_by_role("link", name=f"zone {fiche_zone_delimitee.numero}")
expect(link).to_be_visible()
expect(link).to_have_attribute("href", fiche_zone_delimitee.get_absolute_url())


def test_have_link_to_fiche_zone_delimitee_if_zone_infestee(live_server, page, fiche_detection):
"Si une fiche détection est liée à une zone infestée d'une fiche zone délimitée, un lien vers cette fiche zone délimitée doit être présent"
fiche_zone_delimitee = baker.make(FicheZoneDelimitee)
zone_infestee = baker.make(ZoneInfestee, fiche_zone_delimitee=fiche_zone_delimitee)
fiche_detection.zone_infestee = zone_infestee
fiche_detection.save()
page.goto(f"{live_server.url}{fiche_detection.get_absolute_url()}")
link = page.get_by_role("link", name=f"zone {fiche_zone_delimitee.numero}")
expect(link).to_be_visible()
expect(link).to_have_attribute("href", fiche_zone_delimitee.get_absolute_url())
3 changes: 2 additions & 1 deletion sv/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class FicheDetectionDetailView(
DetailView,
):
model = FicheDetection
queryset = FicheDetection.objects.all().optimized_for_details()
queryset = FicheDetection.objects.all().optimized_for_details().with_fiche_zone_delimitee_numero()

def get_object(self, queryset=None):
if hasattr(self, "object"):
Expand Down Expand Up @@ -130,6 +130,7 @@ def get_context_data(self, **kwargs):
context["can_update_visibilite"] = self.get_object().can_update_visibilite(self.request.user)
context["visibilite_form"] = FicheDetectionVisibiliteUpdateForm(obj=self.get_object())
context["rattachement_detection_form"] = RattachementDetectionForm()
context["fiche_zone_delimitee"] = self.get_object().get_fiche_zone_delimitee()
return context

def test_func(self) -> bool | None:
Expand Down

0 comments on commit d7ba49b

Please sign in to comment.