Browse Source

More on LeRelation fieldtypes leo and naturerelation

Yann Weber 8 years ago
parent
commit
8cff059ab3
2 changed files with 35 additions and 0 deletions
  1. 12
    0
      EditorialModel/fieldtypes/leo.py
  2. 23
    0
      EditorialModel/fieldtypes/naturerelation.py

+ 12
- 0
EditorialModel/fieldtypes/leo.py View File

@@ -32,3 +32,15 @@ class EmFieldType(GenericFieldType):
32 32
             return leobject.get([qfilter])
33 33
         else:
34 34
             return datas[fname]
35
+    
36
+    def check_data_consistency(self, lec, fname, datas):
37
+        if self.superior:
38
+            return self.check_sup_consistency()
39
+        else:
40
+            return self.check_sub_consistency()
41
+
42
+    def check_sup_consistency(self, lec, fname, datas):
43
+        pass
44
+
45
+    def check_sub_consistency(self, lec, fname, datas):
46
+        pass

+ 23
- 0
EditorialModel/fieldtypes/naturerelation.py View File

@@ -3,6 +3,7 @@
3 3
 from .char import EmFieldType
4 4
 
5 5
 import EditorialModel.classtypes as classtypes
6
+import leapi.lerelation as lerelation
6 7
 
7 8
 class EmFieldType(EmFieldType):
8 9
     
@@ -14,3 +15,25 @@ class EmFieldType(EmFieldType):
14 15
 
15 16
     def check_data_value(self, value):
16 17
         return value is None or ( value in classtypes.getall())
18
+
19
+    def check_data_consistency(self, lec, fname, datas):
20
+        #Checking given component
21
+        if not isinstance(lec, lerelation.LeRelation):
22
+            return ValueError("A field naturerelation has to be in a LeRelation object, but this one is in a '%s'"%lec.__name__)
23
+        nature = datas[fname]
24
+        lesup = datas['lesup']
25
+        lesub = datas['lesub']
26
+        if nature is None:
27
+            if not isinstance(lec, lerelation.LeRel2Type):
28
+                return ValueError("Only LeRel2Type are allowed to have NULL nature")
29
+        else:
30
+            if not isinstance(lec, lerelation.LeHierarch):
31
+                return ValueError("Only LeHierarch has not NULL nature")
32
+            #Checking if nature <=> lesup & lesub classtypes
33
+            if nature not in classtypes.EmClassType.natures(lesub._classtype):
34
+                return ValueError("Invalid nature '%s' for %s"%(nature, lesub.__class__.__name__))
35
+
36
+            if not lesup.is_root():
37
+                if nature not in classtypes.EmClassType.natures(lesup._classtype):
38
+                    return ValueError("Invalid nature '%s' for %s"%(nature, lesup.__class__.__name__))
39
+        return True

Loading…
Cancel
Save