From 2d84fd6cd012a1a744d0bfda7f80d5d8d5b91d4a Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 9 Jul 2018 05:52:28 +0200 Subject: [PATCH 1/2] bug fixes import export --- rowers/c2stuff.py | 2 ++ rowers/imports.py | 1 + rowers/stravastuff.py | 1 + 3 files changed, 4 insertions(+) diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index 600e70e1..e1f88dad 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -8,6 +8,7 @@ import datetime from requests import Request, Session from rowers.types import otwtypes +from iso8601 import ParseError from rowsandall_app.settings import ( C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET @@ -18,6 +19,7 @@ import django_rq queue = django_rq.get_queue('default') queuelow = django_rq.get_queue('low') queuehigh = django_rq.get_queue('low') +from utils import myqueue oauth_data = { 'client_id': C2_CLIENT_ID, diff --git a/rowers/imports.py b/rowers/imports.py index 7a1a1c49..2d29cc3c 100644 --- a/rowers/imports.py +++ b/rowers/imports.py @@ -24,6 +24,7 @@ import urllib import iso8601 from uuid import uuid4 + # Django from django.shortcuts import render_to_response from django.http import HttpResponseRedirect, HttpResponse,JsonResponse diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index b5f69028..6c2972e5 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -16,6 +16,7 @@ import stravalib from stravalib.exc import ActivityUploadFailed,TimeoutExceeded from iso8601 import ParseError +from utils import myqueue import gzip From 5fed54097d19e7f89312ffa5c25b3b73fb4fe628 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 9 Jul 2018 06:21:34 +0200 Subject: [PATCH 2/2] repaired TrainingPeaks --- rowers/imports.py | 8 +++++--- rowers/tpstuff.py | 29 ++++++++++++++++++++++++++++- rowers/views.py | 1 - 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/rowers/imports.py b/rowers/imports.py index 2d29cc3c..142eac45 100644 --- a/rowers/imports.py +++ b/rowers/imports.py @@ -100,6 +100,7 @@ def imports_open(user,oauth_data): tokenname, refreshtokenname, expirydatename, + oauth_data, ) return token @@ -190,6 +191,7 @@ def imports_get_token( data=post_data, headers=headers) + if response.status_code == 200 or response.status_code == 201: token_json = response.json() thetoken = token_json['access_token'] @@ -231,12 +233,12 @@ def imports_make_authorization_url(oauth_data): return HttpResponseRedirect(url) # This is token refresh. Looks for tokens in our database, then refreshes -def imports_token_refresh(user,tokenname,refreshtokenname,expirydatename): +def imports_token_refresh(user,tokenname,refreshtokenname,expirydatename,oauth_data): r = Rower.objects.get(user=user) - refreshtoken = getattr(r,refreshtokennname) + refreshtoken = getattr(r,refreshtokenname) - res = imports_do_refresh_token(refreshtoken) + res = imports_do_refresh_token(refreshtoken,oauth_data) access_token = res[0] expires_in = res[1] refresh_token = res[2] diff --git a/rowers/tpstuff.py b/rowers/tpstuff.py index b57397cd..21a584c3 100644 --- a/rowers/tpstuff.py +++ b/rowers/tpstuff.py @@ -28,6 +28,7 @@ oauth_data = { 'redirect_uri': TP_REDIRECT_URI, 'autorization_uri': "https://oauth.trainingpeaks.com/oauth/authorize?", 'content_type': 'application/x-www-form-urlencoded', +# 'content_type': 'application/json', 'tokenname': 'tptoken', 'refreshtokenname': 'tprefreshtoken', 'expirydatename': 'tptokenexpirydate', @@ -46,7 +47,33 @@ def do_refresh_token(refreshtoken): # Exchange access code for long-lived access token def get_token(code): - return imports_get_token(code, oauth_data) + client_auth = requests.auth.HTTPBasicAuth(TP_CLIENT_KEY, TP_CLIENT_SECRET) + post_data = { + "client_id":TP_CLIENT_KEY, + "grant_type": "authorization_code", + "code": code, + "redirect_uri":TP_REDIRECT_URI, + "client_secret": TP_CLIENT_SECRET, + } + headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + } + + response = requests.post("https://oauth.trainingpeaks.com/oauth/token", + data=post_data) + + + try: + token_json = response.json() + thetoken = token_json['access_token'] + expires_in = token_json['expires_in'] + refresh_token = token_json['refresh_token'] + except KeyError: + thetoken = 0 + expires_in = 0 + refresh_token = 0 + + return thetoken,expires_in,refresh_token # Make authorization URL including random string def make_authorization_url(request): diff --git a/rowers/views.py b/rowers/views.py index f75fc317..58b0fac5 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -2294,7 +2294,6 @@ def rower_process_tpcallback(request): code = request.GET['code'] res = tpstuff.get_token(code) - access_token = res[0] expires_in = res[1] refresh_token = res[2]