From df40d5f17d77d910b2520c755fa80dff543bcd41 Mon Sep 17 00:00:00 2001 From: Yann Date: Thu, 26 Nov 2015 17:14:05 +0100 Subject: [PATCH] Updated fieldtypes to make easier the check_data_value inheritance --- EditorialModel/fieldtypes/generic.py | 10 ++-------- EditorialModel/fieldtypes/integer.py | 4 +--- EditorialModel/fieldtypes/regexchar.py | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/EditorialModel/fieldtypes/generic.py b/EditorialModel/fieldtypes/generic.py index 79fd9a5..b86ac2b 100644 --- a/EditorialModel/fieldtypes/generic.py +++ b/EditorialModel/fieldtypes/generic.py @@ -37,16 +37,10 @@ class GenericFieldType(object): if ftype not in self._allowed_ftype: raise AttributeError("Ftype '%s' not known" % ftype) - if check_data_value is None: - check_data_value = self.dummy_check_data_value - elif not callable(check_data_value): - raise AttributeError("check_data_value argument has to be a function it is a %s" % type(check_data_value)) - if ftype != self.__class__.ftype: raise RuntimeError("The ftype is not the same for the instance and the class. Maybe %s reimplement ftype at class level but shouldn't" % self.name) self.ftype = ftype - self._check_data_value = check_data_value self.nullable = bool(nullable) self.uniq = bool(uniq) @@ -92,10 +86,10 @@ class GenericFieldType(object): def check_data_consistency(self, lec, fname, datas): return True - ## @brief Check if a value is correct + ## @brief Dummy check, designed to be implemented in child classes # @param value * : The value # @return (checked_and_casted_value, Exception|None) - def dummy_check_data_value(self, value): + def _check_data_value(self, value): return (value, None) ## @brief Given a fieldtype name return the associated python class diff --git a/EditorialModel/fieldtypes/integer.py b/EditorialModel/fieldtypes/integer.py index c94a140..5b85bb8 100644 --- a/EditorialModel/fieldtypes/integer.py +++ b/EditorialModel/fieldtypes/integer.py @@ -10,11 +10,9 @@ class EmFieldType(GenericFieldType): ftype = 'int' def __init__(self, **kwargs): - if 'check_data_value' not in kwargs: - kwargs['check_data_value'] = self.check_value super(EmFieldType, self).__init__(ftype='int', **kwargs) - def check_value(self, value): + def _check_data_value(self, value): error = None try: value = int(value) diff --git a/EditorialModel/fieldtypes/regexchar.py b/EditorialModel/fieldtypes/regexchar.py index f40a1fd..bb2e4ed 100644 --- a/EditorialModel/fieldtypes/regexchar.py +++ b/EditorialModel/fieldtypes/regexchar.py @@ -19,7 +19,7 @@ class EmFieldType(char.EmFieldType): super(EmFieldType, self).__init__(check_data_value=check_value, max_length=max_length, **kwargs) - def check_value(value): + def _check_data_value(self,value): error = None if not self.compiled_re.match(value): value = ''