diff --git a/rowers/imports.py b/rowers/imports.py index 7de3ad92..44453c72 100644 --- a/rowers/imports.py +++ b/rowers/imports.py @@ -177,6 +177,7 @@ def imports_get_token( client_id,client_secret ) + post_data = {"grant_type": "authorization_code", "code": code, "redirect_uri": redirect_uri, @@ -184,12 +185,14 @@ def imports_get_token( "client_id": client_id, } - headers = {'Accept': 'application/json', - 'Api-Key': client_id, - 'Content-Type': 'application/json', - 'user-agent': 'sanderroosendaal'} + try: + headers = oauth_data['headers'] + except KeyError: + headers = {'Accept': 'application/json', + 'Api-Key': client_id, + 'Content-Type': 'application/json', + 'user-agent': 'sanderroosendaal'} - if 'json' in oauth_data['content_type']: response = requests.post( base_uri, @@ -201,10 +204,12 @@ 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'] + try: + thetoken = token_json['access_token'] + except KeyError: + return [0,0,0] try: refresh_token = token_json['refresh_token'] except KeyError: diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index ffc8837a..7a92ab1a 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -19,7 +19,8 @@ queuehigh = django_rq.get_queue('low') from rowers.models import ( Rower, Workout,Team, GeoCourse, TrainingMicroCycle,TrainingMesoCycle,TrainingMacroCycle, - TrainingPlan,PlannedSession,VirtualRaceResult,CourseTestResult + TrainingPlan,PlannedSession,VirtualRaceResult,CourseTestResult, + get_course_timezone ) import metrics @@ -103,7 +104,7 @@ def timefield_to_seconds_duration(t): def get_virtualrace_times(virtualrace): geocourse = GeoCourse.objects.get(id = virtualrace.course.id) - timezone_str = courses.get_course_timezone(geocourse) + timezone_str = get_course_timezone(geocourse) startdatetime = datetime.datetime.combine( virtualrace.startdate,virtualrace.start_time) @@ -299,7 +300,7 @@ def is_session_complete_ws(ws,ps): coursetime, coursemeters, coursecompleted - ) = courses.get_time_course(ws,ps.course) + ) = get_time_course(ws,ps.course) if coursecompleted: return 1.0,'completed',completiondate else: diff --git a/rowers/runkeeperstuff.py b/rowers/runkeeperstuff.py index ba7b8548..151bb5bc 100644 --- a/rowers/runkeeperstuff.py +++ b/rowers/runkeeperstuff.py @@ -12,13 +12,14 @@ oauth_data = { 'client_id': RUNKEEPER_CLIENT_ID, 'client_secret': RUNKEEPER_CLIENT_SECRET, 'redirect_uri': RUNKEEPER_REDIRECT_URI, - 'autorization_uri': "https://www.runkeeper.com/opps/authorize", + 'autorization_uri': "https://www.runkeeper.com/apps/authorize", 'content_type': 'application/x-www-form-urlencoded', 'tokenname': 'runkeepertoken', 'refreshtokenname': None, 'expirydatename': None, 'bearer_auth': True, 'base_url': "https://runkeeper.com/apps/token", + 'headers': {'user-agent': 'sanderroosendaal'} } diff --git a/rowers/views.py b/rowers/views.py index 6a5681c6..1d88d01f 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -76,7 +76,8 @@ from rowers.models import ( VirtualRaceForm,VirtualRaceResultForm,RowerImportExportForm ) from rowers.models import ( - FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement,BasePlannedSessionFormSet + FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement,BasePlannedSessionFormSet, + get_course_timezone ) from rowers.metrics import rowingmetrics,defaultfavoritecharts from rowers import metrics @@ -2239,6 +2240,10 @@ def rower_process_runkeepercallback(request): res = runkeeperstuff.get_token(code) access_token = res[0] + if access_token == 0: + messages.error(request,"Something went wrong importing the token") + return imports_view(request) + r = getrower(request.user) r.runkeepertoken = access_token @@ -13698,7 +13703,7 @@ def virtualevent_create_view(request): # correct times geocourse = GeoCourse.objects.get(id= course.id) - timezone_str = courses.get_course_timezone(geocourse) + timezone_str = get_course_timezone(geocourse) startdatetime = datetime.datetime.combine(startdate,start_time) enddatetime = datetime.datetime.combine(enddate,end_time)