From 037fe5f722c77c1a3c4144131c86665926d7b533 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Wed, 23 Jan 2013 17:11:02 -0500 Subject: [PATCH] When checking types to convert data, don't forget about longs. 32-bit Pythons make longs from values that are ints on 64-bit Pythons. --- common/djangoapps/util/converters.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/common/djangoapps/util/converters.py b/common/djangoapps/util/converters.py index 17c45114d1..dd4f47e70e 100644 --- a/common/djangoapps/util/converters.py +++ b/common/djangoapps/util/converters.py @@ -15,10 +15,13 @@ def jsdate_to_time(field): """ if field is None: return field - elif isinstance(field, unicode) or isinstance(field, str): # iso format but ignores time zone assuming it's Z + elif isinstance(field, (unicode, str)): + # ISO format but ignores time zone assuming it's Z. d=datetime.datetime(*map(int, re.split('[^\d]', field)[:6])) # stop after seconds. Debatable return d.utctimetuple() - elif isinstance(field, int) or isinstance(field, float): + elif isinstance(field, (int, long, float)): return time.gmtime(field / 1000) elif isinstance(field, time.struct_time): - return field \ No newline at end of file + return field + else: + raise ValueError("Couldn't convert %r to time" % field)