Add support for extensions with phone number type

This commit is contained in:
Ryan Leckey
2015-01-16 13:23:41 -08:00
committed by Konsta Vesterinen
parent 62da10c958
commit 6f1b61762f
4 changed files with 34 additions and 7 deletions

View File

@@ -4,6 +4,12 @@ Changelog
Here you can see the full list of changes between each SQLAlchemy-Utils release.
0.30.12 (2015-07-05)
^^^^^^^^^^^^^^^^^^^^
- Added support for PhoneNumber extensions (#121)
0.30.11 (2015-06-18)
^^^^^^^^^^^^^^^^^^^^

View File

@@ -92,4 +92,4 @@ from .types import ( # noqa
WeekDaysType
)
__version__ = '0.30.11'
__version__ = '0.30.12'

View File

@@ -109,10 +109,14 @@ class PhoneNumberType(types.TypeDecorator, ScalarCoercible):
def process_bind_param(self, value, dialect):
if value:
if isinstance(value, PhoneNumber):
return getattr(value, self.STORE_FORMAT)
else:
return getattr(PhoneNumber(value), self.STORE_FORMAT)
if not isinstance(value, PhoneNumber):
value = PhoneNumber(value, country_code=self.country_code)
if self.STORE_FORMAT == 'e164' and value.extension:
return '%s;ext=%s' % (value.e164, value.extension)
return getattr(value, self.STORE_FORMAT)
return value
def process_result_value(self, value, dialect):
@@ -121,6 +125,7 @@ class PhoneNumberType(types.TypeDecorator, ScalarCoercible):
return value
def _coerce(self, value):
if value is not None and not isinstance(value, PhoneNumber):
if value and not isinstance(value, PhoneNumber):
value = PhoneNumber(value, country_code=self.country_code)
return value
return value or None

View File

@@ -88,6 +88,22 @@ class TestPhoneNumberType(TestCase):
)
assert result.first()[0] == u'+358401234567'
def test_phone_number_with_extension(self):
user = self.User(phone_number='555-555-5555 Ext. 555')
self.session.add(user)
self.session.commit()
self.session.refresh(user)
assert user.phone_number.extension == '555'
def test_empty_phone_number_is_equiv_to_none(self):
user = self.User(phone_number='')
self.session.add(user)
self.session.commit()
self.session.refresh(user)
assert user.phone_number is None
def test_phone_number_is_none(self):
phone_number = None
user = self.User()