#677 handle DateTime objects in encode_datetime
Merged 6 years ago by mikem. Opened 6 years ago by mikem.

file modified
+3
@@ -21,6 +21,7 @@ 

  from __future__ import absolute_import

  import calendar

  import datetime

+ from koji.xmlrpcplus import DateTime

  from fnmatch import fnmatch

  import koji

  import logging
@@ -186,6 +187,8 @@ 

      """Convert datetime objects to strings"""

      if isinstance(value, datetime.datetime):

          return value.isoformat(' ')

+     elif isinstance(value, DateTime):

+         return datetime.datetime(*value.timetuple()[:6]).isoformat(' ')

      else:

          return value

  

file modified
+1
@@ -11,6 +11,7 @@ 

  getparser = xmlrpc_client.getparser

  loads = xmlrpc_client.loads

  Fault = xmlrpc_client.Fault

+ DateTime = xmlrpc_client.DateTime

  

  

  class ExtendedMarshaller(xmlrpc_client.Marshaller):

@@ -2,6 +2,7 @@ 

  import unittest

  

  import koji.util

+ from koji.xmlrpcplus import DateTime

  

  

  class testEncodeDatetime(unittest.TestCase):
@@ -22,6 +23,15 @@ 

              self.assertEqual(chk1, dstr)

              self.assertEqual(chk2, dstr)

  

+     def test_xmlrpc_dates(self):

+         # we skip the last because xmlrpc's DateTime class does not preserve

+         # fractions of seconds

+         for dt, dstr in self.DATES[:2]:

+             dt = DateTime(dt)

+             chk1 = koji.util.encode_datetime(dt)

+             chk2 = koji.util.encode_datetime_recurse(dt)

+             self.assertEqual(chk1, dstr)

+             self.assertEqual(chk2, dstr)

  

      def test_embedded_dates(self):

          dt1, ds1 = self.DATES[0]