use dateutil to parse datetime strings (#9640)

This commit is contained in:
Benjamin Dauvergne 2016-01-15 12:26:25 +01:00
parent f45bb8b2d0
commit 9143056569
3 changed files with 11 additions and 8 deletions

1
debian/pydist-overrides vendored Normal file
View File

@ -0,0 +1 @@
python-dateutil python-dateutil

View File

@ -6,10 +6,11 @@ import importlib
from functools import wraps from functools import wraps
from xml.etree import ElementTree as ET from xml.etree import ElementTree as ET
import requests import requests
import dateutil.parser
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.timezone import make_aware, utc, now, make_naive from django.utils.timezone import make_aware, utc, now, make_naive, is_aware
from django.conf import settings from django.conf import settings
import lasso import lasso
@ -115,13 +116,13 @@ def iso8601_to_datetime(date_string):
value. value.
This function ignores the sub-second resolution''' This function ignores the sub-second resolution'''
m = re.match(r'(\d+-\d+-\d+T\d+:\d+:\d+)(?:\.\d+)?Z$', date_string) dt = dateutil.parser.parse(date_string)
if not m: if is_aware(dt):
raise ValueError('Invalid ISO8601 date') if not settings.USE_TZ:
tm = time.strptime(m.group(1)+'Z', "%Y-%m-%dT%H:%M:%SZ") dt = make_naive(dt)
dt = make_aware(datetime.datetime.fromtimestamp(time.mktime(tm)), utc) else:
if not settings.USE_TZ: if settings.USE_TZ:
dt = make_naive(dt) dt = make_aware(dt)
return dt return dt
def get_seconds_expiry(datetime_expiry): def get_seconds_expiry(datetime_expiry):

View File

@ -89,6 +89,7 @@ setup(name="django-mellon",
install_requires=[ install_requires=[
'django>=1.5', 'django>=1.5',
'requests', 'requests',
'python-dateutil',
], ],
setup_requires=[ setup_requires=[
'django', 'django',