Pārlūkot izejas kodu

[useradmin] Fix backwards compatibility with Python 2.6 for datetime delta total_seconds

Jenny Kim 9 gadi atpakaļ
vecāks
revīzija
396ae85fd0

+ 9 - 1
apps/useradmin/src/useradmin/middleware.py

@@ -80,7 +80,7 @@ class LastActivityMiddleware(object):
     now = datetime.now()
     logout = False
 
-    if profile.last_activity and expires_after > 0 and (now - profile.last_activity).total_seconds() > expires_after:
+    if profile.last_activity and expires_after > 0 and self._total_seconds(now - profile.last_activity) > expires_after:
       messages.info(request, _('Your session has been timed out due to inactivity.'))
       logout = True
 
@@ -94,3 +94,11 @@ class LastActivityMiddleware(object):
 
     if logout:
       dt_logout(request, next_page='/')
+
+
+  def _total_seconds(self, dt):
+    # Keep backward compatibility with Python 2.6 which doesn't support total_seconds()
+    if hasattr(dt, 'total_seconds'):
+      return dt.total_seconds()
+    else:
+      return (dt.microseconds + (dt.seconds + dt.days * 24 * 3600) * 10**6) / 10**6

+ 1 - 1
apps/useradmin/src/useradmin/tests.py

@@ -847,7 +847,7 @@ def test_get_connection_bind_password_script():
       f()
 
 
-class BaseUserAdminTests(object):
+class LastActivityMiddlewareTests(object):
 
   def test_last_activity(self):
     c = make_logged_in_client(username="test", is_superuser=True)