Browse Source

Changed the validation check for the references

Roland Haroutiounian 9 years ago
parent
commit
90c3c8518b
2 changed files with 16 additions and 19 deletions
  1. 13
    15
      lodel/leapi/datahandlers/reference.py
  2. 3
    4
      lodel/leapi/datahandlers/references/Dict.py

+ 13
- 15
lodel/leapi/datahandlers/reference.py View File

@@ -11,10 +11,6 @@ class Reference(FieldDataHandler):
11 11
     def __init__(self, allowed=[], internal=False, **kwargs):
12 12
         self.allowed = allowed
13 13
         self.internal = internal
14
-        '''
15
-        if not self.is_ref_valid():
16
-            raise ValueError("The target of the reference is not valid")
17
-        '''
18 14
         super().__init__(internal=self.internal, **kwargs)
19 15
 
20 16
     ## @brief gets the target of the reference
@@ -22,18 +18,20 @@ class Reference(FieldDataHandler):
22 18
         return self._refs
23 19
 
24 20
     ## @brief checks if the target is valid
25
-    '''
26
-    def is_ref_valid(self):
27
-        relateds = self.get_relateds()
28
-        if not isinstance(relateds, self._refs_class):
29
-            return False
30 21
 
31
-        if isinstance(relateds, EmClass):
32
-            relateds = [relateds]
22
+    def check_data_value(self, value):
33 23
 
34
-        for related in relateds:
24
+        if not isinstance(value, self._refs_class):
25
+            return (value, "The reference should be an instance of %s, %s gotten" % (self._refs_class, value.__class__))
26
+
27
+        if isinstance(value, EmClass):
28
+            value = [value]
29
+
30
+        if isinstance(value, dict):
31
+            ref_values = value.values()
32
+            
33
+        for related in value:
35 34
             if not isinstance(related, EmClass):
36
-                return False
35
+                return (value, "The reference %s should be an instance of EmClass, %s gotten" % (related.display_name, related.__class__))
37 36
 
38
-        return True
39
-    '''
37
+        return (value, None)

+ 3
- 4
lodel/leapi/datahandlers/references/Dict.py View File

@@ -17,19 +17,18 @@ class Dict(Reference):
17 17
 
18 18
     ## @brief checks if the given target is valid
19 19
     # @return bool
20
-    '''
21
-    def is_target_valid(self):
20
+    def _check_data_value(self, value):
22 21
         relateds = self.get_relateds()
23 22
 
24 23
         if not isinstance(relateds, self._refs_class):
25
-            return False
24
+            return
26 25
 
27 26
         for related in relateds.values():
28 27
             if not isinstance(related, EmClass):
29 28
                 return False
30 29
 
31 30
         return True
32
-    '''
31
+
33 32
     ## @brief adds a referenced element
34 33
     # @param ref_name str : key of the item in the reference dict
35 34
     # @param emclass EmClass

Loading…
Cancel
Save