changeset 3074:09cef303962b beta

python2.5 safe parsing of datetime string with microseconds
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 07 Dec 2012 02:15:34 +0100
parents e54ec8211944
children 25029d6f4b47
files rhodecode/tests/functional/test_admin.py
diffstat 1 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/tests/functional/test_admin.py	Fri Dec 07 02:09:33 2012 +0100
+++ b/rhodecode/tests/functional/test_admin.py	Fri Dec 07 02:15:34 2012 +0100
@@ -17,15 +17,28 @@
     def setup_class(cls):
         UserLog.query().delete()
         Session().commit()
+
+        def strptime(val):
+            fmt = '%Y-%m-%d %H:%M:%S'
+            if '.' not in val:
+                return datetime.datetime.strptime(val, fmt)
+
+            nofrag, frag = val.split(".")
+            date = datetime.datetime.strptime(nofrag, fmt)
+
+            frag = frag[:6]  # truncate to microseconds
+            frag += (6 - len(frag)) * '0'  # add 0s
+            return date.replace(microsecond=int(frag))
+
         with open(os.path.join(FIXTURES, 'journal_dump.csv')) as f:
             for row in csv.DictReader(f):
                 ul = UserLog()
                 for k, v in row.iteritems():
                     v = safe_unicode(v)
                     if k == 'action_date':
-                        v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S.%f')
+                        v = strptime(v)
                     if k in ['user_id', 'repository_id']:
-                        #nullable due to FK problems
+                        # nullable due to FK problems
                         v = None
                     setattr(ul, k, v)
                 Session().add(ul)
@@ -134,4 +147,4 @@
         self.log_user()
         response = self.app.get(url(controller='admin/admin', action='index',
                                     filter='date:20121020'))
-        response.mustcontain('17 entries')
\ No newline at end of file
+        response.mustcontain('17 entries')