فهرست منبع

#4 add controls for MP

omassot 6 سال پیش
والد
کامیت
dc6e1238e5
2فایلهای تغییر یافته به همراه32 افزوده شده و 2 حذف شده
  1. 18 2
      MnCheck/schemas/mn1_rec.py
  2. 14 0
      MnCheck/schemas/mn2_rec.py

+ 18 - 2
MnCheck/schemas/mn1_rec.py

@@ -394,8 +394,10 @@ class Mn1Checker(BaseChecker):
             if cable.equipement_b is None:
                 self.log_error(f"L'équipement lié '{cable.CA_EQ_B}' n'existe pas", item=cable)
                 
-            if cable.CA_STATUT != cable.equipement_b.EQ_STATUT:
-                self.log_error(f"L'équipement B du cable n'a pas le même statut que le cable", item=cable)
+            if cable.CA_STATUT == "REC" and cable.equipement_a.EQ_STATUT in ('PRO', 'EXE'):
+                self.log_error(f"Incohérence de statut entre le cable et son équipement A", item=cable)
+            if cable.CA_STATUT == "REC" and cable.equipement_b.EQ_STATUT in ('PRO', 'EXE'):
+                self.log_error(f"Incohérence de statut entre le cable et son équipement B", item=cable)
                 
     def test_constraints_cables_equipements_b(self):
         """ Application des contraintes: Equipements B
@@ -644,6 +646,20 @@ class Mn1Checker(BaseChecker):
             for prop, gests in cases.items():
                 if noeud.NO_PRO.upper() == prop and not noeud.NO_GEST.upper() in gests:
                     self.log_error("Propriétaire: {}, gestionnaire(s) possible(s): {} (renseigné: {})".format(prop, ', '.join(gests), noeud.NO_GEST), item=noeud)
+                
+        for artere in self.arteres:
+            if artere.AR_PRO_FOU.upper() == "ORANGE" and (artere.noeud_a.NO_PRO.upper() == "MANCHE NUMERIQUE" \
+                                                          or artere.noeud_b.NO_PRO.upper() == "MANCHE NUMERIQUE"):
+                self.log_error("Les noeuds d'une artère ORANGE ne peuvent pas être propriété de MANCHE NUMERIQUE", item=artere)
+                
+    def test_statuts(self):
+        """ Cohérence des statuts
+        Vérifie que les statuts des éléments sont cohérents """
+        for cable in self.cables:
+            if cable.equipement_a and cable.CA_STATUT == "REC" and cable.equipement_a.EQ_STATUT in ('PRO', 'EXE'):
+                self.log_error(f"Incohérence de statut entre le cable et son équipement A", item=cable)
+            if cable.equipement_b and cable.CA_STATUT == "REC" and cable.equipement_b.EQ_STATUT in ('PRO', 'EXE'):
+                self.log_error(f"Incohérence de statut entre le cable et son équipement B", item=cable)
                     
     def _za_for_pbo(self, pbo):
         # retourne la ZAPBO correspondant à la PBO en parametre, None si aucune

+ 14 - 0
MnCheck/schemas/mn2_rec.py

@@ -760,6 +760,11 @@ class Mn2Checker(BaseChecker):
             for prop, gests in cases.items():
                 if noeud.NO_PRO.upper() == prop and not noeud.NO_GEST.upper() in gests:
                     self.log_error("Propriétaire: {}, gestionnaire(s) possible(s): {} (renseigné: {})".format(prop, ', '.join(gests), noeud.NO_GEST), item=noeud)
+                
+        for artere in self.arteres:
+            if artere.AR_PRO_FOU.upper() == "ORANGE" and (artere.noeud_a.NO_PRO.upper() == "MANCHE NUMERIQUE" \
+                                                          or artere.noeud_b.NO_PRO.upper() == "MANCHE NUMERIQUE"):
+                self.log_error("Les noeuds d'une artère ORANGE ne peuvent pas être propriété de MANCHE NUMERIQUE", item=artere)
                      
     def test_dates_install(self):
         """ Dates d'installation
@@ -776,6 +781,15 @@ class Mn2Checker(BaseChecker):
             if tranchee.TR_STATUT == "EN SERVICE" and not tranchee.TR_DATE_IN:
                 self.log_error("Date d'installation (TR_DATE_IN) manquante", item=tranchee)
                     
+    def test_statuts(self):
+        """ Cohérence des statuts
+        Vérifie que les statuts des éléments sont cohérents """
+        for cable in self.cables:
+            if cable.equipement_a and cable.CA_STATUT == "REC" and cable.equipement_a.EQ_STATUT in ('PRO', 'EXE'):
+                self.log_error(f"Incohérence de statut entre le cable et son équipement A", item=cable)
+            if cable.equipement_b and cable.CA_STATUT == "REC" and cable.equipement_b.EQ_STATUT in ('PRO', 'EXE'):
+                self.log_error(f"Incohérence de statut entre le cable et son équipement B", item=cable)
+                    
     def _za_for_pbo(self, pbo):
         # retourne la ZAPBO correspondant à la PBO en parametre, None si aucune
         if hasattr(pbo, 'zapbo') and pbo.zapbo: