diff --git a/goblin/abc.py b/goblin/abc.py index 31dba6dc7768d6b819c6441a8c97cb5966624925..f57becc3eadc462bc364327ddd236ae7eff1e3b1 100644 --- a/goblin/abc.py +++ b/goblin/abc.py @@ -41,6 +41,11 @@ class DataType(abc.ABC): @abc.abstractmethod def to_ogm(self, val): """Convert property value to a Python compatible format""" + try: + self.validate(val) + except exception.ValidationError: + logger.warning( + "DB val {} Fails OGM validation for {}".format(val, self)) return val diff --git a/goblin/properties.py b/goblin/properties.py index 74e9b7dcbf255eb1ff8a29ce911520a30f32a1c3..a5e77e21efeb437de2e83ebaa9aa9b0e194e0bfb 100644 --- a/goblin/properties.py +++ b/goblin/properties.py @@ -87,7 +87,7 @@ class String(abc.DataType): return str(val) except ValueError as e: raise exception.ValidationError( - '{} is not a valid string'.format(val)) from e + 'Not a valid string: {}'.format(val)) from e def to_db(self, val=None): return super().to_db(val=val) @@ -105,7 +105,7 @@ class Integer(abc.DataType): return int(val) except ValueError as e: raise exception.ValidationError( - '{} is not a valid integer'.format(val)) from e + 'Not a valid integer: {}'.format(val)) from e def to_db(self, val=None): return super().to_db(val=val) @@ -119,14 +119,15 @@ class Float(abc.DataType): try: val = float(val) except ValueError: - raise exception.ValidationError("Not a valid float: {}".format(val)) + raise exception.ValidationError( + "Not a valid float: {}".format(val)) from e return val - def to_db(self, val): - return val + def to_db(self, val=None): + return super().to_db(val=val) def to_ogm(self, val): - return float(val) + return super().to_ogm(val) class Bool(abc.DataType): @@ -134,11 +135,12 @@ class Bool(abc.DataType): try: val = bool(val) except ValueError: - raise exception.ValidationError("Not a valid bool: {}".format(val)) + raise exception.ValidationError( + "Not a valid boolean: {val}".format(val)) from e return val - def to_db(self, val): - return bool(val) + def to_db(self, val=None): + return super().to_db(val=val) def to_ogm(self, val): - return bool(val) + return super().to_ogm(val)