From 470addae97f9aba899af7149e744bbf2c8d721bd Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Oct 06 2017 21:10:12 +0000 Subject: fix formatTime for DateTime Related: https://pagure.io/koji/issue/623 --- diff --git a/koji/__init__.py b/koji/__init__.py index 0dad3db..cfc47d2 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -78,7 +78,7 @@ import warnings import xml.sax import xml.sax.handler import six.moves.urllib -from koji.xmlrpcplus import getparser, loads, dumps, Fault +from koji.xmlrpcplus import getparser, loads, dumps, Fault, xmlrpc_client PROFILE_MODULES = {} # {module_name: module_instance} @@ -2766,7 +2766,9 @@ def formatTime(value): """Format a timestamp so it looks nicer""" if not value: return '' - elif isinstance(value, datetime.datetime): + if isinstance(value, xmlrpc_client.DateTime): + value = datetime.datetime.strptime(value.value, "%Y%m%dT%H:%M:%S") + if isinstance(value, datetime.datetime): return value.strftime('%Y-%m-%d %H:%M:%S') else: # trim off the microseconds, if present diff --git a/tests/test_lib/test_format_time.py b/tests/test_lib/test_format_time.py new file mode 100644 index 0000000..7ba28a8 --- /dev/null +++ b/tests/test_lib/test_format_time.py @@ -0,0 +1,48 @@ +from __future__ import absolute_import +import datetime +import unittest +import six.moves.xmlrpc_client as xmlrpc_client + +from koji import formatTime, formatTimeLong + +class TestFormatTime(unittest.TestCase): + def test_format_time(self): + self.assertEqual(formatTime(None), '') + self.assertEqual(formatTime(''), '') + + desired = '2017-10-05 09:52:31' + # datetime + d = datetime.datetime(year=2017, month=10, day=5, hour=9, minute=52, second=31, microsecond=12) + self.assertEqual(formatTime(d), desired) + + # DateTime + d1 = xmlrpc_client.DateTime(d) + self.assertEqual(formatTime(d1), desired) + + # str + self.assertEqual(formatTime(desired), desired) + + # str + microseconds + self.assertEqual(formatTime(desired + '.123'), desired) + + def test_format_time_long(self): + self.assertEqual(formatTimeLong(None), '') + self.assertEqual(formatTimeLong(''), '') + + desired = 'Thu, 05 Oct 2017 09:52:31 CEST' + + # datetime + d = datetime.datetime(year=2017, month=10, day=5, hour=9, minute=52, second=31, microsecond=12) + self.assertEqual(formatTimeLong(d), desired) + + # DateTime + d1 = xmlrpc_client.DateTime(d) + self.assertEqual(formatTimeLong(d1), desired) + + # str + d2 = '2017-10-05 09:52:31' + self.assertEqual(formatTimeLong(d2), desired) + + # str + microseconds + self.assertEqual(formatTimeLong(d2 + '.123'), desired) +