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:
parent
798ad5a68e
commit
8cff059ab3
2 changed files with 35 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue