|
@@ -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
|