Handle TZ change in iso8601 >=0.1.12

The iso8601 lib introduced a change such that if running on python
3.2 or later it internally uses the python timezone information
instead of its own implementation. This does not change direct
date handling, but when converting this value there is a slight
difference where now python 2.x will show UTC times as "UTC", but
on python 3 they will end up with "UTC+00:00".

The to_primitive call for DateTime fields was doing an exact match
on "UTC" to determine whether to include "Z" in the resulting string.
This updates that handling to recognize either of the new values.

Change-Id: Iff2e5a5b056605fae59f2489cc7baa1fc2e3352f
Closes-bug: #1744160
(cherry picked from commit 9c4aefb8ea)
Signed-off-by: Matthew Thode <mthode@mthode.org>
This commit is contained in:
Sean McGinnis 2018-01-18 16:52:03 -06:00 committed by Doug Hellmann
parent 92f1d77c23
commit c95f0c8768
1 changed files with 2 additions and 1 deletions

View File

@ -25,5 +25,6 @@ def isotime(at):
"""Stringify time in ISO 8601 format."""
st = at.strftime(_ISO8601_TIME_FORMAT)
tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
st += ('Z' if tz == 'UTC' else tz)
# Need to handle either iso8601 or python UTC format
st += ('Z' if tz in ['UTC', 'UTC+00:00'] else tz)
return st