From 4325b173090d4380ae4bf94dc03fbace3a9e6552 Mon Sep 17 00:00:00 2001 From: davebshow <davebshow@gmail.com> Date: Tue, 19 Jul 2016 14:46:17 -0400 Subject: [PATCH] warn on invalid datatype database response --- goblin/abc.py | 5 +++++ goblin/properties.py | 22 ++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/goblin/abc.py b/goblin/abc.py index 31dba6d..f57becc 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 74e9b7d..a5e77e2 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) -- GitLab