diff --git a/loko/assets/models/trafficlights.py b/loko/assets/models/trafficlights.py index 97d3ef8..d7b4805 100644 --- a/loko/assets/models/trafficlights.py +++ b/loko/assets/models/trafficlights.py @@ -3,6 +3,7 @@ # --------------------- from django.contrib.gis.db import models +from django.db.models import Q from django.urls import reverse from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext_lazy as _ @@ -299,23 +300,23 @@ class TrafficLightPole(TrafficLightAbstractGeoAsset): @property def sorted_lanterns(self): - return self.lanterns.order_by('code') + return self.lanterns.exclude(status='archived').order_by('code') @property def sorted_accessories(self): - return self.accessories.order_by('code') + return self.accessories.exclude(status='archived').order_by('code') @property def sorted_radars(self): - return self.radars.order_by('code') + return self.radars.exclude(status='archived').order_by('code') @property def sorted_detectors(self): - return self.detectors.order_by('code') + return self.detectors.exclude(status='archived').order_by('code') @property def sorted_signpanels(self): - return self.signpanels_attached.order_by('code') + return self.signpanels_attached.exclude(status='archived').order_by('code') def save(self, *args, **kwargs): super().save(*args, **kwargs) @@ -408,19 +409,24 @@ class TrafficLightController(TrafficLightAbstractGeoAsset): @property def sorted_hardwares(self): - return self.hardwares.order_by('code') + return self.hardwares.exclude(status='archived').order_by('code') @property def sorted_detectors(self): - return self.detectors.order_by('code') + from assets.models.trafficlights import TrafficLightDetector + if self.intersection_id: + return TrafficLightDetector.objects.filter( + Q(controller=self) | Q(intersection_id=self.intersection_id) + ).exclude(status='archived').distinct().order_by('code') + return self.detectors.exclude(status='archived').order_by('code') @property def sorted_network_hardwares(self): - return self.network_hardwares.order_by('code') + return self.network_hardwares.exclude(status='archived').order_by('code') @property def sorted_voltage_hardwares(self): - return self.voltage_hardwares.order_by('code') + return self.voltage_hardwares.exclude(status='archived').order_by('code') def save(self, *args, **kwargs): super().save(*args, **kwargs) @@ -516,6 +522,10 @@ class TrafficLightDetector(TrafficLightAbstractGeoAsset): self.intersection = self.pole.intersection elif self.controller and self.controller.intersection and not self.intersection_id: self.intersection = self.controller.intersection + if not self.controller_id and self.intersection_id: + active_ctrl = TrafficLightController.objects.filter(intersection_id=self.intersection_id, status='active').first() + if active_ctrl: + self.controller = active_ctrl super().save(*args, **kwargs) class Meta: @@ -760,7 +770,7 @@ class TrafficLightRadarPole(TrafficLightAbstractGeoAsset): @property def sorted_radars(self): - return self.radars.order_by('code') + return self.radars.exclude(status='archived').order_by('code') @property def sorted_signpanels(self): diff --git a/loko/assets/templates/assets/trafficlights_intersection_detail.html b/loko/assets/templates/assets/trafficlights_intersection_detail.html index ceb3a81..d4924cd 100644 --- a/loko/assets/templates/assets/trafficlights_intersection_detail.html +++ b/loko/assets/templates/assets/trafficlights_intersection_detail.html @@ -677,7 +677,7 @@ aria-controls="collapseHardware{{ ctrl.id }}"> {% translate "Hardwares du contrôleur" %} - {{ ctrl.hardwares.count }} + {{ ctrl.sorted_hardwares|length }}
{% translate "Détecteurs" %} - {{ ctrl.detectors.count }} + {{ ctrl.sorted_detectors|length }}
{{ det.code }} {% if det.name %}{{ det.name }}{% endif %} + {% if det.pole %}{{ det.pole.code }}{% endif %} {% if det.hardware %}{{ det.hardware }}{% endif %} {% if det.status != 'active' %}{{ det.get_status_display }}{% endif %} @@ -757,7 +758,7 @@ aria-controls="collapseNetwork{{ ctrl.id }}"> {% translate "Hardware réseau" %} - {{ ctrl.network_hardwares.count }} + {{ ctrl.sorted_network_hardwares|length }}
{% translate "Hardware Tension" %} - {{ ctrl.voltage_hardwares.count }} + {{ ctrl.sorted_voltage_hardwares|length }}