From 9d6cbf0c8d93511837b616808d8b9740953331f5 Mon Sep 17 00:00:00 2001 From: Konsta Vesterinen Date: Thu, 14 Jan 2016 18:26:59 +0200 Subject: [PATCH] Fix scalar coercion, refs #173 --- CHANGES.rst | 6 ++++++ sqlalchemy_utils/__init__.py | 2 +- sqlalchemy_utils/types/locale.py | 4 ++-- tests/types/test_locale.py | 5 +++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 85ab4d5..bdce0ce 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,12 @@ Changelog Here you can see the full list of changes between each SQLAlchemy-Utils release. +0.31.5 (2015-01-14) +^^^^^^^^^^^^^^^^^^^ + +- Fixed scalar parsing of LocaleType (#173) + + 0.31.4 (2015-12-06) ^^^^^^^^^^^^^^^^^^^ diff --git a/sqlalchemy_utils/__init__.py b/sqlalchemy_utils/__init__.py index 8396aae..4438066 100644 --- a/sqlalchemy_utils/__init__.py +++ b/sqlalchemy_utils/__init__.py @@ -93,4 +93,4 @@ from .types import ( # noqa WeekDaysType ) -__version__ = '0.31.4' +__version__ = '0.31.5' diff --git a/sqlalchemy_utils/types/locale.py b/sqlalchemy_utils/types/locale.py index 6751a96..7948575 100644 --- a/sqlalchemy_utils/types/locale.py +++ b/sqlalchemy_utils/types/locale.py @@ -46,7 +46,7 @@ class LocaleType(types.TypeDecorator, ScalarCoercible): user.locale = 'de_DE' - user.locale # Locale('de_DE') + user.locale # Locale('de', territory='DE') """ @@ -71,5 +71,5 @@ class LocaleType(types.TypeDecorator, ScalarCoercible): def _coerce(self, value): if value is not None and not isinstance(value, babel.Locale): - return babel.Locale(value) + return babel.Locale.parse(value) return value diff --git a/tests/types/test_locale.py b/tests/types/test_locale.py index 106a211..7360a22 100644 --- a/tests/types/test_locale.py +++ b/tests/types/test_locale.py @@ -36,6 +36,11 @@ class TestLocaleType(TestCase): assert self.session.query(self.User.locale).first()[0] == ko_kr + def test_coerce_territory_parsing(self): + user = self.User() + user.locale = 'ko_KR' + assert user.locale == locale.babel.Locale(u'ko', territory=u'KR') + def test_scalar_attributes_get_coerced_to_objects(self): user = self.User(locale='en_US')