Fiy python2.7'ism (#566)
authorSebastian Spaeth <Sebastian@SSpaeth.de>
Fri, 14 Dec 2012 09:54:53 +0000 (10:54 +0100)
committerSebastian Spaeth <Sebastian@SSpaeth.de>
Fri, 14 Dec 2012 10:52:53 +0000 (11:52 +0100)
The oauth plugin used timedelta.total_seconds which was introduced
in python 2.7 only. To preserve backwards compatability, we simply
calculate the time difference in seconds manually.

I considered monkeypatching total_seconds to the timedelta object,
but it is a built-in type written in C (I believe) and modifying
attributes failed horribly. Switch this to use total_seconds once we
require python 2.7 as minimum version.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
mediagoblin/plugins/oauth/views.py

index cf605fd2d675b2f25e72458737eab8379cdb5098..643c2783edfc87eb30ce348621ed5c77b3c205a4 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # GNU MediaGoblin -- federated, autonomous media hosting
 # Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
 #
@@ -216,12 +217,15 @@ def access_token(request):
             token.client = code.client
             token.save()
 
+            # expire time of token in full seconds
+            # timedelta.total_seconds is python >= 2.7 or we would use that
+            td = token.expires - datetime.now()
+            exp_in = 86400*td.days + td.seconds # just ignore µsec
+
             access_token_data = {
                 'access_token': token.token,
                 'token_type': 'bearer',
-                'expires_in': int(
-                    round(
-                        (token.expires - datetime.now()).total_seconds()))}
+                'expires_in': exp_in}
             return json_response(access_token_data, _disable_cors=True)
         else:
             return json_response({