Add support for extensions with phone number type
This commit is contained in:

committed by
Konsta Vesterinen

parent
62da10c958
commit
6f1b61762f
@@ -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)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@@ -92,4 +92,4 @@ from .types import ( # noqa
|
||||
WeekDaysType
|
||||
)
|
||||
|
||||
__version__ = '0.30.11'
|
||||
__version__ = '0.30.12'
|
||||
|
@@ -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
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user