omassot пре 7 година
родитељ
комит
2a73af65e5
3 измењених фајлова са 25 додато и 7 уклоњено
  1. 15 1
      core/cerberus_.py
  2. 6 6
      core/checking.py
  3. 4 0
      core/mncheck.py

+ 15 - 1
core/cerberus_.py

@@ -25,7 +25,6 @@ def is_modern_french_date(field, value, error):
     except:
         error(field, 'Doit être une date au format jj/mm/aaaa: {}'.format(value))
 
-
 def is_int(field, value, error):
     try:
         if  float(value) != int(value):
@@ -39,6 +38,13 @@ def is_positive_int(field, value, error):
             error(field, 'Doit être un nombre entier positif: {}'.format(value))
     except (TypeError, ValueError):
         error(field, 'Doit être un nombre entier positif: {}'.format(value))
+        
+def is_strictly_positive_int(field, value, error):
+    try:
+        if  float(value) != int(value) or int(value) <= 0:
+            error(field, 'Doit être un nombre entier positif: {}'.format(value))
+    except (TypeError, ValueError):
+        error(field, 'Doit être un nombre entier positif: {}'.format(value))
 
 def is_multi_int(field, value, error):
     
@@ -60,6 +66,14 @@ def is_positive_float(field, value, error):
             error(field, 'Doit être un nombre décimal positif ({})'.format(value))
     except ValueError:
         error(field, 'Doit être un nombre décimal positif ({})'.format(value))
+        
+def is_strictly_positive_float(field, value, error):
+    try:
+        value = locale.atof(str(value))
+        if  value != float(value) or float(value) <= 0:
+            error(field, 'Doit être un nombre décimal positif ({})'.format(value))
+    except ValueError:
+        error(field, 'Doit être un nombre décimal positif ({})'.format(value))
 
 
 # Ref: http://docs.python-cerberus.org/en/stable/api.html#error-codes

+ 6 - 6
core/checking.py

@@ -128,17 +128,17 @@ class BaseChecker():
             self._test_running = result
             self.comlink._started_test(result)
             
-            if not dry:
-                self.setUp()
-            
             try:
+                if not dry:
+                    self.setUp()
+                    
                 test()
+                
+                if not dry:
+                    self.tearDown()
             except:
                 result.handle_exception(sys.exc_info())
             
-            if not dry:
-                self.tearDown()
-
             tests_results.append(result)
             
             self.comlink._ended_test(result)

+ 4 - 0
core/mncheck.py

@@ -64,6 +64,10 @@ class QgsModel():
     def __init__(self, qgs_feature):
         self._feature = qgs_feature
         
+        if self.pk:
+            # On affecte une valeur par defaut à la clef primaire pour éviter des erreurs en cascade au chargement des données
+            setattr(self, self.pk, None)
+        
         for attr, value in self.attributes().items():
             if isinstance(value, QVariant):
                 value = value.value() if not value.isNull() else ""