utils: Use pytz instead of datetime.timezone for timezones

datetime.timezone is new in Python 3.2 [1], so pytz allows us to keep
support for Python 2.7.

[1]: http://docs.python.org/dev/library/datetime.html#datetime.timezone
This commit is contained in:
W. Trevor King 2013-06-11 22:32:51 -04:00
commit 1102143c33
2 changed files with 9 additions and 7 deletions

View file

@ -9,6 +9,8 @@ import locale
from sys import platform, version_info from sys import platform, version_info
from tempfile import mkdtemp from tempfile import mkdtemp
import pytz
from pelican.generators import TemplatePagesGenerator from pelican.generators import TemplatePagesGenerator
from pelican.writers import Writer from pelican.writers import Writer
from pelican.settings import read_settings from pelican.settings import read_settings
@ -43,13 +45,13 @@ class TestUtils(LoggedTestCase):
year=2012, month=11, day=22, hour=22, minute=11, second=10) year=2012, month=11, day=22, hour=22, minute=11, second=10)
date_hour_sec_z = datetime.datetime( date_hour_sec_z = datetime.datetime(
year=2012, month=11, day=22, hour=22, minute=11, second=10, year=2012, month=11, day=22, hour=22, minute=11, second=10,
tzinfo=datetime.timezone.utc) tzinfo=pytz.timezone('UTC'))
date_hour_sec_0430 = datetime.datetime( date_hour_sec_est = datetime.datetime(
year=2012, month=11, day=22, hour=22, minute=11, second=10, year=2012, month=11, day=22, hour=22, minute=11, second=10,
tzinfo=datetime.timezone(datetime.timedelta(hours=4, minutes=30))) tzinfo=pytz.timezone('EST'))
date_hour_sec_frac_z = datetime.datetime( date_hour_sec_frac_z = datetime.datetime(
year=2012, month=11, day=22, hour=22, minute=11, second=10, year=2012, month=11, day=22, hour=22, minute=11, second=10,
microsecond=123000, tzinfo=datetime.timezone.utc) microsecond=123000, tzinfo=pytz.timezone('UTC'))
dates = { dates = {
'2012-11-22': date, '2012-11-22': date,
'2012/11/22': date, '2012/11/22': date,
@ -61,7 +63,7 @@ class TestUtils(LoggedTestCase):
'22.11.2012 22:11': date_hour, '22.11.2012 22:11': date_hour,
'2012-11-22 22:11:10': date_hour_sec, '2012-11-22 22:11:10': date_hour_sec,
'2012-11-22T22:11:10Z': date_hour_sec_z, '2012-11-22T22:11:10Z': date_hour_sec_z,
'2012-11-22T22:11:10+0430': date_hour_sec_0430, '2012-11-22T22:11:10-0500': date_hour_sec_est,
'2012-11-22T22:11:10.123Z': date_hour_sec_frac_z, '2012-11-22T22:11:10.123Z': date_hour_sec_frac_z,
} }

View file

@ -15,7 +15,7 @@ from collections import Hashable
from functools import partial from functools import partial
from codecs import open, BOM_UTF8 from codecs import open, BOM_UTF8
from datetime import datetime, timezone from datetime import datetime
from itertools import groupby from itertools import groupby
from jinja2 import Markup from jinja2 import Markup
from operator import attrgetter from operator import attrgetter
@ -210,7 +210,7 @@ def get_date(string):
except ValueError: except ValueError:
continue continue
if date_format.endswith('Z'): if date_format.endswith('Z'):
date = date.replace(tzinfo=timezone.utc) date = date.replace(tzinfo=pytz.timezone('UTC'))
return date return date
raise ValueError('{0!r} is not a valid date'.format(string)) raise ValueError('{0!r} is not a valid date'.format(string))