浏览代码

Integration du controle de la longueur max

olivier.massot 7 年之前
父节点
当前提交
18d488a171
共有 2 个文件被更改,包括 20 次插入2 次删除
  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")
 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):    
     """ 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:
                         logger.error("%s - Champs vide", fieldname)
                         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:
                     if not val in fieldmodel["in_list"]:
                         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:
       TR_CODE:
         type: str
+        max_len: 23
       TR_NOM:
         type: str
+        max_len: 23
         tester: "lambda t, x: x=t.TR_CODE"
       TR_ID_INSE:
         type: str
+        max_len: 5
         in_list: []
       TR_VOIE:
         type: str
+        max_len: 200
       TR_TYP_IMP:
         type: str
         in_list: ["ACCOTEMENT STABILISE", "ACCOTEMENT NON STABILISE", "CHAUSSEE LOURDE", "CHAUSSEE LEGERE", "FOSSE", "TROTTOIR", "ESPACE VERT", "ENCORBELLEMENT"]
@@ -66,21 +70,27 @@ files:
         type: str
         in_list: ["COMMUNE", "COMMUNAUTE DE COMMUNES", "DEPARTEMENT", "ETAT", "PRIVE"]
       TR_SCHEMA:
+        max_len: 100
         type: str
       TR_DATE_IN:
         type: datetime
         date_format: "%d/%m/%Y"
       TR_SRC_GEO:
         type: str
+        max_len: 50
       TR_QLT_GEO:
         type: str
+        max_len: 1
       TR_PRO_MD:
         type: str
+        max_len: 20
       TR_COMMENT:
         type: str
+        max_len: 300
         allow_empty: True
       TR_STATUT:
         type: str
         in_list: ["EN ETUDE", "EN REALISATION", "EN SERVICE", "HORS SERVICE"]
+        
   "zapbo_geo.shp":
     shape_type: 5