PhoneNumber now inherits ScalarCoercible

This commit is contained in:
Konsta Vesterinen
2013-08-13 12:27:17 +03:00
parent 4bf029dbf5
commit 4f987be1c6

View File

@@ -1,6 +1,7 @@
import six import six
from sqlalchemy import types from sqlalchemy import types
from sqlalchemy_utils import ImproperlyConfigured from sqlalchemy_utils import ImproperlyConfigured
from .scalar_coercible import ScalarCoercible
try: try:
@@ -69,7 +70,7 @@ class PhoneNumber(BasePhoneNumber):
return six.text_type(self.national).encode('utf-8') return six.text_type(self.national).encode('utf-8')
class PhoneNumberType(types.TypeDecorator): class PhoneNumberType(types.TypeDecorator, ScalarCoercible):
""" """
Changes PhoneNumber objects to a string representation on the way in and Changes PhoneNumber objects to a string representation on the way in and
changes them back to PhoneNumber objects on the way out. If E164 is used changes them back to PhoneNumber objects on the way out. If E164 is used
@@ -99,7 +100,7 @@ class PhoneNumberType(types.TypeDecorator):
return PhoneNumber(value, self.country_code) return PhoneNumber(value, self.country_code)
return value return value
def coercion_listener(self, target, value, oldvalue, initiator): def _coerce(self, value):
if value is not None and not isinstance(value, PhoneNumber): if value is not None and not isinstance(value, PhoneNumber):
value = PhoneNumber(value, country_code=self.country_code) value = PhoneNumber(value, country_code=self.country_code)
return value return value