|
@@ -210,6 +210,7 @@ models = [Artere, Cable, Equipement, Noeud, Tranchee, Zapbo]
|
|
|
class Prise(QgsModel):
|
|
class Prise(QgsModel):
|
|
|
layername = "FTTH_SITES_GEO_VALIDE"
|
|
layername = "FTTH_SITES_GEO_VALIDE"
|
|
|
layername_bis = "SITE_GEO"
|
|
layername_bis = "SITE_GEO"
|
|
|
|
|
+ pk = "ID_PRISE"
|
|
|
|
|
|
|
|
####### Validateur
|
|
####### Validateur
|
|
|
|
|
|
|
@@ -246,13 +247,35 @@ class Mn2Checker(BaseChecker):
|
|
|
Prise.layer = next((l for l in QgsProject.instance().mapLayers().values() \
|
|
Prise.layer = next((l for l in QgsProject.instance().mapLayers().values() \
|
|
|
if l.name().lower() in [Prise.layername.lower(), Prise.layername_bis.lower()]), None)
|
|
if l.name().lower() in [Prise.layername.lower(), Prise.layername_bis.lower()]), None)
|
|
|
|
|
|
|
|
|
|
+ # Zapm partielles concernées, déduites des prises
|
|
|
|
|
+ self.zapm_pa = []
|
|
|
|
|
+
|
|
|
def _load_prises(self):
|
|
def _load_prises(self):
|
|
|
""" on charge la couche des prises si elle existe """
|
|
""" on charge la couche des prises si elle existe """
|
|
|
- self.prises = []
|
|
|
|
|
- if Prise.layer:
|
|
|
|
|
- prises = [Prise(f) for f in Prise.layer.getFeatures()]
|
|
|
|
|
- self.prises = [p for p in prises if p.T_ETAT.lower() != "obsolete"]
|
|
|
|
|
-
|
|
|
|
|
|
|
+ if not self.prises:
|
|
|
|
|
+ self.prises = []
|
|
|
|
|
+
|
|
|
|
|
+ if Prise.layer:
|
|
|
|
|
+ prises = [Prise(f) for f in Prise.layer.getFeatures()]
|
|
|
|
|
+ self.prises = [p for p in prises if p.T_ETAT.lower() != "obsolete"]
|
|
|
|
|
+
|
|
|
|
|
+ for prise in self.prises:
|
|
|
|
|
+ prise.zapbos = []
|
|
|
|
|
+
|
|
|
|
|
+ if self.zapbos:
|
|
|
|
|
+
|
|
|
|
|
+ for zapbo in self.zapbos:
|
|
|
|
|
+ zapbo.prises = []
|
|
|
|
|
+
|
|
|
|
|
+ for prise in self.prises:
|
|
|
|
|
+ if zapbo.geom.contains(prise.geom):
|
|
|
|
|
+ zapbo.prises.append(prise)
|
|
|
|
|
+ prise.zapbos.append(zapbo)
|
|
|
|
|
+
|
|
|
|
|
+ if not prise.ID_ZAPM_PA in self.zapm_pa:
|
|
|
|
|
+ # la prise est dans une zapbo: on ajoute son id de zapm partielles à la liste
|
|
|
|
|
+ self.zapm_pa.append(prise.ID_ZAPM_PA)
|
|
|
|
|
+
|
|
|
def test_load_layers(self):
|
|
def test_load_layers(self):
|
|
|
""" Chargement des données
|
|
""" Chargement des données
|
|
|
Contrôle la présence des couches attendues
|
|
Contrôle la présence des couches attendues
|
|
@@ -848,9 +871,13 @@ class Mn2Checker(BaseChecker):
|
|
|
raise CheckingException("La couche des prises n'est pas chargée")
|
|
raise CheckingException("La couche des prises n'est pas chargée")
|
|
|
|
|
|
|
|
for zapbo in self.zapbos:
|
|
for zapbo in self.zapbos:
|
|
|
- if not next((prise for prise in self.prises if zapbo.geom.contains(prise.geom)), 0):
|
|
|
|
|
|
|
+ if not zapbo.prises:
|
|
|
self.log_error("La Zapbo ne contient aucune prise", item=zapbo)
|
|
self.log_error("La Zapbo ne contient aucune prise", item=zapbo)
|
|
|
|
|
|
|
|
|
|
+ for prise in self.prises:
|
|
|
|
|
+ if prise.ID_ZAPM_PA in self.zapm_pa and not prise.zapbos:
|
|
|
|
|
+ self.log_error("La prise n'est contenue dans aucune ZAPBO", item=prise)
|
|
|
|
|
+
|
|
|
def test_pbo_dimension(self):
|
|
def test_pbo_dimension(self):
|
|
|
""" Dimensionnement des PBO
|
|
""" Dimensionnement des PBO
|
|
|
Compare la couche des prises (si chargée) au dimensionnement des PBO"""
|
|
Compare la couche des prises (si chargée) au dimensionnement des PBO"""
|
|
@@ -868,7 +895,7 @@ class Mn2Checker(BaseChecker):
|
|
|
if not zapbo:
|
|
if not zapbo:
|
|
|
continue
|
|
continue
|
|
|
|
|
|
|
|
- zapbo.nb_prises = sum([int(prise.NB_PRISE) for prise in self.prises if zapbo.geom.contains(prise.geom) and prise.NB_PRISE])
|
|
|
|
|
|
|
+ zapbo.nb_prises = sum([int(prise.NB_PRISE) for prise in zapbo.prises if prise.NB_PRISE])
|
|
|
|
|
|
|
|
# Controle du dimensionnement des PBO
|
|
# Controle du dimensionnement des PBO
|
|
|
if equipement.EQ_TYPE_PH == 'PBO 6' and not zapbo.nb_prises < 6:
|
|
if equipement.EQ_TYPE_PH == 'PBO 6' and not zapbo.nb_prises < 6:
|