Fix phonenumber string coercion

This commit is contained in:
Konsta Vesterinen
2014-12-09 16:54:45 +02:00
parent 936b066eb5
commit fe456ff005
3 changed files with 17 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. Here you can see the full list of changes between each SQLAlchemy-Utils release.
0.27.12 (2014-12-xx)
^^^^^^^^^^^^^^^^^^^^
- Fixed PhoneNumber string coercion (#93)
0.27.11 (2014-12-06) 0.27.11 (2014-12-06)
^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^

View File

@@ -1,6 +1,7 @@
import six import six
from sqlalchemy import types from sqlalchemy import types
from sqlalchemy_utils.exceptions import ImproperlyConfigured from sqlalchemy_utils.exceptions import ImproperlyConfigured
from sqlalchemy_utils.utils import str_coercible
from .scalar_coercible import ScalarCoercible from .scalar_coercible import ScalarCoercible
@@ -13,6 +14,7 @@ except ImportError:
BasePhoneNumber = object BasePhoneNumber = object
@str_coercible
class PhoneNumber(BasePhoneNumber): class PhoneNumber(BasePhoneNumber):
''' '''
Extends a PhoneNumber class from `Python phonenumbers library`_. Adds Extends a PhoneNumber class from `Python phonenumbers library`_. Adds
@@ -66,9 +68,6 @@ class PhoneNumber(BasePhoneNumber):
def __unicode__(self): def __unicode__(self):
return self.national return self.national
def __str__(self):
return six.text_type(self.national).encode('utf-8')
class PhoneNumberType(types.TypeDecorator, ScalarCoercible): class PhoneNumberType(types.TypeDecorator, ScalarCoercible):
""" """

View File

@@ -1,6 +1,8 @@
from pytest import mark import six
from tests import TestCase
import sqlalchemy as sa import sqlalchemy as sa
from pytest import mark
from tests import TestCase
from sqlalchemy_utils import PhoneNumberType, PhoneNumber from sqlalchemy_utils import PhoneNumberType, PhoneNumber
from sqlalchemy_utils.types import phone_number from sqlalchemy_utils.types import phone_number
@@ -45,8 +47,11 @@ class TestPhoneNumber(object):
def test_phone_number_str_repr(self): def test_phone_number_str_repr(self):
number = PhoneNumber('+358401234567') number = PhoneNumber('+358401234567')
assert number.__unicode__() == number.national if six.PY2:
assert number.__str__() == number.national.encode('utf-8') assert unicode(number) == number.national
assert str(number) == number.national.encode('utf-8')
else:
assert str(number) == number.national
@mark.skipif('phone_number.phonenumbers is None') @mark.skipif('phone_number.phonenumbers is None')