diff --git a/.gitignore b/.gitignore index a015a2d..95825ec 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,11 @@ nosetests.xml .mr.developer.cfg .project .pydevproject + +# vim +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist +*~ diff --git a/setup.py b/setup.py index 8238066..d1bbf8a 100644 --- a/setup.py +++ b/setup.py @@ -19,6 +19,8 @@ extras_require = { 'docutils>=0.10', 'flexmock>=0.9.7', 'psycopg2>=2.5.1', + 'pytz>=2014.2', + 'python-dateutil>=2.2', 'pymysql' ], 'anyjson': ['anyjson>=0.3.3'], diff --git a/sqlalchemy_utils/types/timezone.py b/sqlalchemy_utils/types/timezone.py index 43ebb47..0fc51cd 100644 --- a/sqlalchemy_utils/types/timezone.py +++ b/sqlalchemy_utils/types/timezone.py @@ -23,7 +23,7 @@ class TimezoneType(types.TypeDecorator, ScalarCoercible): timezone = sa.Column(TimezoneType(backend='pytz')) """ - impl = types.CHAR(50) + impl = types.Unicode(50) python_type = None diff --git a/tests/types/test_timezone.py b/tests/types/test_timezone.py index 3f6c67d..fe5e0c8 100644 --- a/tests/types/test_timezone.py +++ b/tests/types/test_timezone.py @@ -4,21 +4,18 @@ import sqlalchemy as sa from sqlalchemy_utils.types import timezone from tests import TestCase - -try: - import dateutil - -except ImportError: - dateutil = None +import dateutil +import pytz -@mark.skipif('dateutil is None') class TestTimezoneType(TestCase): def create_models(self): class Visitor(self.Base): __tablename__ = 'document' id = sa.Column(sa.Integer, primary_key=True) - timezone = sa.Column(timezone.TimezoneType) + timezone_dateutil = sa.Column(timezone.TimezoneType( + backend='dateutil')) + timezone_pytz = sa.Column(timezone.TimezoneType(backend='pytz')) def __repr__(self): return 'Visitor(%r)' % self.id @@ -27,13 +24,17 @@ class TestTimezoneType(TestCase): def test_parameter_processing(self): visitor = self.Visitor( - timezone=u'America/Los_Angeles' + timezone_dateutil=u'America/Los_Angeles', + timezone_pytz=u'America/Los_Angeles' ) self.session.add(visitor) self.session.commit() - visitor = self.session.query(self.Visitor).filter_by( - timezone='America/Los_Angeles').first() + visitor_dateutil = self.session.query(self.Visitor).filter_by( + timezone_dateutil='America/Los_Angeles').first() + visitor_pytz = self.session.query(self.Visitor).filter_by( + timezone_pytz='America/Los_Angeles').first() - assert visitor is not None + assert visitor_dateutil is not None + assert visitor_pytz is not None