1
0
Fork 0
mirror of https://github.com/yweber/lodel2.git synced 2026-01-14 10:42:14 +01:00

More on LeRelation fieldtypes leo and naturerelation

This commit is contained in:
Yann 2015-11-27 11:20:26 +01:00
commit 8cff059ab3
2 changed files with 35 additions and 0 deletions

View file

@ -32,3 +32,15 @@ class EmFieldType(GenericFieldType):
return leobject.get([qfilter])
else:
return datas[fname]
def check_data_consistency(self, lec, fname, datas):
if self.superior:
return self.check_sup_consistency()
else:
return self.check_sub_consistency()
def check_sup_consistency(self, lec, fname, datas):
pass
def check_sub_consistency(self, lec, fname, datas):
pass

View file

@ -3,6 +3,7 @@
from .char import EmFieldType
import EditorialModel.classtypes as classtypes
import leapi.lerelation as lerelation
class EmFieldType(EmFieldType):
@ -14,3 +15,25 @@ class EmFieldType(EmFieldType):
def check_data_value(self, value):
return value is None or ( value in classtypes.getall())
def check_data_consistency(self, lec, fname, datas):
#Checking given component
if not isinstance(lec, lerelation.LeRelation):
return ValueError("A field naturerelation has to be in a LeRelation object, but this one is in a '%s'"%lec.__name__)
nature = datas[fname]
lesup = datas['lesup']
lesub = datas['lesub']
if nature is None:
if not isinstance(lec, lerelation.LeRel2Type):
return ValueError("Only LeRel2Type are allowed to have NULL nature")
else:
if not isinstance(lec, lerelation.LeHierarch):
return ValueError("Only LeHierarch has not NULL nature")
#Checking if nature <=> lesup & lesub classtypes
if nature not in classtypes.EmClassType.natures(lesub._classtype):
return ValueError("Invalid nature '%s' for %s"%(nature, lesub.__class__.__name__))
if not lesup.is_root():
if nature not in classtypes.EmClassType.natures(lesup._classtype):
return ValueError("Invalid nature '%s' for %s"%(nature, lesup.__class__.__name__))
return True