Browse Source

Integration du controle de la longueur max

olivier.massot 7 years ago
parent
commit
18d488a171
2 changed files with 20 additions and 2 deletions
  1. 10 2
      main.py
  2. 10 0
      resources/netgeo_v2-2_doe.yaml

+ 10 - 2
main.py

@@ -18,7 +18,10 @@ from core.constants import MAIN
 logger = logging.getLogger("datachecker")
 logger = logging.getLogger("datachecker")
 logconf.start("datachecker", logging.INFO)
 logconf.start("datachecker", logging.INFO)
 
 
-# TODO Vérifier la projection (besoin de GDAL/OGR)
+# TODO: Vérifier la projection (besoin de GDAL/OGR)
+# TODO: max length
+# TODO: fonctions de controle spéciales
+# TODO: Rendu HTML 
 
 
 def check(subject, checker):    
 def check(subject, checker):    
     """ prends un dossier ou une archive en entier et vérifie son contenu selon les règles données par le fichier de config """
     """ prends un dossier ou une archive en entier et vérifie son contenu selon les règles données par le fichier de config """
@@ -133,7 +136,12 @@ def check_folder(folder, checker):
                     if not fieldmodel.get("allow_empty", False) and not val:
                     if not fieldmodel.get("allow_empty", False) and not val:
                         logger.error("%s - Champs vide", fieldname)
                         logger.error("%s - Champs vide", fieldname)
                         continue
                         continue
-            
+                
+                if type_ == "str" and "max_len" in fieldmodel:
+                    if len(str(val)) > fieldmodel["max_len"]:
+                        logger.error("%s - Trop long, la longueur max. est de %s ('%s')", fieldname, fieldmodel["max_len"], val)
+                    
+                
                 try:
                 try:
                     if not val in fieldmodel["in_list"]:
                     if not val in fieldmodel["in_list"]:
                         logger.error("%s - Valeur invalide, pas dans la liste ('%s')", fieldname, val)
                         logger.error("%s - Valeur invalide, pas dans la liste ('%s')", fieldname, val)

+ 10 - 0
resources/netgeo_v2-2_doe.yaml

@@ -26,14 +26,18 @@ files:
     fields:
     fields:
       TR_CODE:
       TR_CODE:
         type: str
         type: str
+        max_len: 23
       TR_NOM:
       TR_NOM:
         type: str
         type: str
+        max_len: 23
         tester: "lambda t, x: x=t.TR_CODE"
         tester: "lambda t, x: x=t.TR_CODE"
       TR_ID_INSE:
       TR_ID_INSE:
         type: str
         type: str
+        max_len: 5
         in_list: []
         in_list: []
       TR_VOIE:
       TR_VOIE:
         type: str
         type: str
+        max_len: 200
       TR_TYP_IMP:
       TR_TYP_IMP:
         type: str
         type: str
         in_list: ["ACCOTEMENT STABILISE", "ACCOTEMENT NON STABILISE", "CHAUSSEE LOURDE", "CHAUSSEE LEGERE", "FOSSE", "TROTTOIR", "ESPACE VERT", "ENCORBELLEMENT"]
         in_list: ["ACCOTEMENT STABILISE", "ACCOTEMENT NON STABILISE", "CHAUSSEE LOURDE", "CHAUSSEE LEGERE", "FOSSE", "TROTTOIR", "ESPACE VERT", "ENCORBELLEMENT"]
@@ -66,21 +70,27 @@ files:
         type: str
         type: str
         in_list: ["COMMUNE", "COMMUNAUTE DE COMMUNES", "DEPARTEMENT", "ETAT", "PRIVE"]
         in_list: ["COMMUNE", "COMMUNAUTE DE COMMUNES", "DEPARTEMENT", "ETAT", "PRIVE"]
       TR_SCHEMA:
       TR_SCHEMA:
+        max_len: 100
         type: str
         type: str
       TR_DATE_IN:
       TR_DATE_IN:
         type: datetime
         type: datetime
         date_format: "%d/%m/%Y"
         date_format: "%d/%m/%Y"
       TR_SRC_GEO:
       TR_SRC_GEO:
         type: str
         type: str
+        max_len: 50
       TR_QLT_GEO:
       TR_QLT_GEO:
         type: str
         type: str
+        max_len: 1
       TR_PRO_MD:
       TR_PRO_MD:
         type: str
         type: str
+        max_len: 20
       TR_COMMENT:
       TR_COMMENT:
         type: str
         type: str
+        max_len: 300
         allow_empty: True
         allow_empty: True
       TR_STATUT:
       TR_STATUT:
         type: str
         type: str
         in_list: ["EN ETUDE", "EN REALISATION", "EN SERVICE", "HORS SERVICE"]
         in_list: ["EN ETUDE", "EN REALISATION", "EN SERVICE", "HORS SERVICE"]
+        
   "zapbo_geo.shp":
   "zapbo_geo.shp":
     shape_type: 5
     shape_type: 5