From e5597107567be3f3f6d7a4b4b3c995a910340c05 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 1 Mar 2020 17:36:06 +0100 Subject: [PATCH] faster strava sync --- rowers/stravastuff.py | 14 +++++++++----- rowers/uploads.py | 4 ++-- rowers/views/exportviews.py | 5 ----- rowers/views/importviews.py | 2 +- rowers/views/workoutviews.py | 2 +- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index bfb80227..e5919997 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -439,15 +439,19 @@ def createstravaworkoutdata(w,dozip=True): # Upload the TCX file to Strava and set the workout activity type # to rowing on Strava def handle_stravaexport(f2,workoutname,stravatoken,description='', - activity_type='Rowing'): + activity_type='Rowing',async=False): # w = Workout.objects.get(id=workoutid) client = stravalib.Client(access_token=stravatoken) act = client.upload_activity(f2,'tcx.gz',name=workoutname) try: - res = act.wait(poll_interval=5.0,timeout=30) - message = 'Workout successfully synchronized to Strava' + if async: + res = act.wait(poll_interval=1.0, timeout=10) + message = 'Workout successfully synchronized to Strava' + else: + res = act.wait(poll_interval=5.0,timeout=30) + message = 'Workout successfully synchronized to Strava' except: res = 0 message = 'Strava upload timed out' @@ -621,7 +625,7 @@ def add_workout_from_data(user,importid,data,strokedata, return id,message -def workout_strava_upload(user,w): +def workout_strava_upload(user,w, async=False): try: thetoken = strava_open(user) except NoTokenError: @@ -644,7 +648,7 @@ def workout_strava_upload(user,w): f,w.name, r.stravatoken, description=w.notes+'\n from '+w.workoutsource+' via rowsandall.com', - activity_type=r.stravaexportas) + activity_type=r.stravaexportas,async=async) if res==0: message = mes w.uploadedtostrava = -1 diff --git a/rowers/uploads.py b/rowers/uploads.py index 258a4d51..0b775d78 100644 --- a/rowers/uploads.py +++ b/rowers/uploads.py @@ -507,7 +507,7 @@ def make_private(w,options): return 1 -def do_sync(w,options): +def do_sync(w,options, async=False): try: upload_to_strava = options['upload_to_Strava'] except KeyError: @@ -532,7 +532,7 @@ def do_sync(w,options): if ('upload_to_Strava' in options and upload_to_strava) or (w.user.strava_auto_export and ispromember(w.user.user)): try: message,id = stravastuff.workout_strava_upload( - w.user.user,w + w.user.user,w,async=async ) except NoTokenError: id = 0 diff --git a/rowers/views/exportviews.py b/rowers/views/exportviews.py index 1b6e0e85..286673c6 100644 --- a/rowers/views/exportviews.py +++ b/rowers/views/exportviews.py @@ -1,10 +1,5 @@ from rowers.views.statements import * - - - - - # Export workout to TCX and send to user's email address @permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True) def workout_tcxemail_view(request,id=0): diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 4662620a..fa262999 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -105,7 +105,7 @@ def workout_strava_upload_view(request,id=0): f,w.name, r.stravatoken, description=newnotes, - activity_type=activity_type) + activity_type=activity_type,async=True) if res==0: messages.error(request,mes) w.uploadedtostrava = -1 diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index b8b534a1..e8ce19ed 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -4500,7 +4500,7 @@ def workout_upload_api(request): w = Workout.objects.get(id=id) - uploads.do_sync(w,post_data) + uploads.do_sync(w,post_data,async=True) if make_plot: res, jobid = uploads.make_plot(r,w,f1,f2,plottype,t)