From a0a6d205cbf1acf3326ba8c4eb5b9edbc8f48a15 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 18 Dec 2016 15:03:48 +0100 Subject: [PATCH] Some error tracking with C2 log --- rowers/c2stuff.py | 14 +++++-- rowers/views.py | 94 ++++++++++++++++++++--------------------------- 2 files changed, 51 insertions(+), 57 deletions(-) diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index 57c960b1..5da14e0a 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -22,6 +22,7 @@ from rowingdata import rowingdata import pandas as pd import numpy as np from rowers.models import Rower,Workout +import sys from rowsandall_app.settings import C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET @@ -243,9 +244,16 @@ def do_refresh_token(refreshtoken): headers=headers) token_json = response.json() - thetoken = token_json['access_token'] - expires_in = token_json['expires_in'] - refresh_token = token_json['refresh_token'] + try: + thetoken = token_json['access_token'] + expires_in = token_json['expires_in'] + refresh_token = token_json['refresh_token'] + except: + with open("media/c2errors.log","a") as errorlog: + errorlog.write("Unexpected Error: "+str(sys.exc_info()[0])) + thetoken = None + expires_in = None + refresh_token = None return [thetoken,expires_in,refresh_token] diff --git a/rowers/views.py b/rowers/views.py index 7c006d7b..db10c787 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -748,7 +748,11 @@ def c2_open(user): # return HttpResponseRedirect("/rowers/me/c2authorize/") else: if (timezone.now()>r.tokenexpirydate): - thetoken = c2stuff.rower_c2_token_refresh(user) + res = c2stuff.rower_c2_token_refresh(user) + if res[0] != None: + thetoken = res[0] + else: + thetoken = r.c2token else: thetoken = r.c2token @@ -967,8 +971,13 @@ def workout_c2_upload_view(request,id=0): 'user-agent': 'sanderroosendaal', 'Content-Type': 'application/json'} import urllib - url = "https://log.concept2.com/api/users/%s/results" % (c2userid) - response = requests.post(url,headers=headers,data=json.dumps(data)) + try: + url = "https://log.concept2.com/api/users/%s/results" % (c2userid) + response = requests.post(url,headers=headers,data=json.dumps(data)) + except: + message = "Unexpected Error: "+sys.exc_info()[0] + with open("media/c2errors.log","a") as errorlog: + errorlog.write("Unexpected Error: "+sys.exc_info()[0]) # check for duplicate error first if (response.status_code == 409 ): @@ -984,10 +993,15 @@ def workout_c2_upload_view(request,id=0): url = "/rowers/workout/"+str(w.id)+"/export" return HttpResponseRedirect(url) except: - message = "Something went wrong in workout_c2_upload_view. Response code 200/201 but C2 sync failed: "+response.text + message = "Something went wrong in workout_c2_upload_view. Response code 200/201 but C2 sync failed: "+response.text + with open("media/c2errors.log","a") as errorlog: + errorlog.write("Unexpected Error: "+sys.exc_info()[0]) + else: s = response message = "Something went wrong in workout_c2_upload_view. C2 sync failed." + with open("media/c2errors.log","a") as errorlog: + errorlog.write("Unexpected Error: "+response.text()) else: message = "You are not authorized to upload this workout" @@ -1104,20 +1118,25 @@ def rower_sporttracks_authorize(request): def rower_c2_token_refresh(request): r = Rower.objects.get(user=request.user) res = c2stuff.do_refresh_token(r.c2refreshtoken) - access_token = res[0] - expires_in = res[1] - refresh_token = res[2] - expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) + if res[0] != None: + access_token = res[0] + expires_in = res[1] + refresh_token = res[2] + expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in) + r = Rower.objects.get(user=request.user) + r.c2token = access_token + r.tokenexpirydate = expirydatetime + r.c2refreshtoken = refresh_token - r = Rower.objects.get(user=request.user) - r.c2token = access_token - r.tokenexpirydate = expirydatetime - r.c2refreshtoken = refresh_token + r.save() - r.save() - - successmessage = "Tokens refreshed. Good to go" - return imports_view(request,successmessage=successmessage) + successmessage = "Tokens refreshed. Good to go" + message = "" + else: + successmessage = "" + message = "Something went wrong (refreshing tokens). Please reauthorize:" + + return imports_view(request,successmessage=successmessage,message=message) @login_required() def rower_sporttracks_token_refresh(request): @@ -3499,13 +3518,6 @@ def c2listdebug_view(request,message=""): return HttpResponseRedirect("/rowers/me/c2authorize/") r = Rower.objects.get(user=request.user) - #if (r.c2token == '') or (r.c2token is None): - #s = "Token doesn't exist. Need to authorize" - #return HttpResponseRedirect("/rowers/me/c2authorize/") - - #elif (timezone.now()>r.tokenexpirydate): - #s = "Token expired. Needs to refresh." - #res = c2stuff.rower_c2_token_refresh(request.user) res = c2stuff.get_c2_workout_list(request.user) @@ -3548,15 +3560,6 @@ def workout_c2import_view(request,message=""): except C2NoTokenError: return HttpResponseRedirect("/rowers/me/c2authorize/") - #r = Rower.objects.get(user=request.user) - #if (r.c2token == '') or (r.c2token is None): - #s = "Token doesn't exist. Need to authorize" - #return HttpResponseRedirect("/rowers/me/c2authorize/") - - #elif (timezone.now()>r.tokenexpirydate): - #s = "Token expired. Needs to refresh." - #res = c2stuff.rower_c2_token_refresh(request.user) - res = c2stuff.get_c2_workout_list(request.user) if (res.status_code != 200): @@ -3617,6 +3620,11 @@ def workout_getsporttracksworkout_view(request,sporttracksid): @login_required() def workout_getc2workout_view(request,c2id): + try: + thetoken = c2_open(request.user) + except C2NoTokenError: + return HttpResponseRedirect("/rowers/me/c2authorize/") + res = c2stuff.get_c2_workout(request.user,c2id) if (res.status_code == 200): data = res.json()['data'] @@ -3913,16 +3921,6 @@ def workout_upload_view(request,message=""): thetoken = c2_open(request.user) except C2NoTokenError: return HttpResponseRedirect("/rowers/me/c2authorize/") - - #r = Rower.objects.get(user=request.user) - #if (r.c2token == '') or (r.c2token is None): - # s = "Token doesn't exist. Need to authorize" - #return HttpResponseRedirect("/rowers/me/c2authorize/") - - #elif (timezone.now()>r.tokenexpirydate): - #s = "Token expired. Needs to refresh." - #res = c2stuff.rower_c2_token_refresh(request.user) - try: c2userid = c2stuff.get_userid(thetoken) @@ -4146,9 +4144,6 @@ def workout_upload_view_debug(request,message=""): i = GraphImage(workout=w, creationdatetime=timezone.now(), filename=fullpathimagename) - # i = GraphImage(workout=w, - # creationdatetime=datetime.datetime.now(), - # filename=fullpathimagename) i.save() # upload to C2 @@ -4158,15 +4153,6 @@ def workout_upload_view_debug(request,message=""): except C2NoTokenError: return HttpResponseRedirect("/rowers/me/c2authorize/") - #r = Rower.objects.get(user=request.user) - #if (r.c2token == '') or (r.c2token is None): - # s = "Token doesn't exist. Need to authorize" - #return HttpResponseRedirect("/rowers/me/c2authorize/") - - #elif (timezone.now()>r.tokenexpirydate): - #s = "Token expired. Needs to refresh." - #res = c2stuff.rower_c2_token_refresh(request.user) - try: response = c2stuff.workout_c2_upload(request.user,w) if (response.status_code != 201):