From b0ce799a88889eac903c4bda5f2ef0d8413fe765 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 24 Aug 2021 18:11:48 +0200 Subject: [PATCH 1/5] demo version new strava import --- rowers/management/commands/processemail.py | 7 +++-- rowers/templates/strava_list_import.html | 8 +++++- rowers/views/importviews.py | 33 ++++++++++++++++++++-- rowers/views/workoutviews.py | 5 +++- 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/rowers/management/commands/processemail.py b/rowers/management/commands/processemail.py index db741824..1eb0c384 100644 --- a/rowers/management/commands/processemail.py +++ b/rowers/management/commands/processemail.py @@ -307,9 +307,10 @@ class Command(BaseCommand): message.delete() # Strava - #rowers = Rower.objects.filter(strava_auto_import=True) - #for r in rowers: - # stravastuff.get_strava_workouts(r) + rowers = Rower.objects.filter(strava_auto_import=True) + for r in rowers: + if user_is_not_basic(r.user): + stravastuff.get_strava_workouts(r) self.stdout.write(self.style.SUCCESS( 'Successfully processed email attachments')) diff --git a/rowers/templates/strava_list_import.html b/rowers/templates/strava_list_import.html index c2eac8d6..c370abe1 100644 --- a/rowers/templates/strava_list_import.html +++ b/rowers/templates/strava_list_import.html @@ -18,6 +18,10 @@
  • +
    + {% csrf_token %} + + Select All New @@ -34,7 +38,8 @@ {% for workout in workouts %} + + @@ -46,6 +51,7 @@ {% endfor %}
    - Import {{ workout|lookup:'name' }} {{ workout|lookup:'starttime' }} {{ workout|lookup:'duration' }}
    +
  • {% else %} diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index d90ee247..b91b27a7 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals from rowers.views.statements import * from rowers.plannedsessions import get_dates_timeperiod +from rowers.tasks import fetch_strava_workout import numpy @@ -923,6 +924,7 @@ def workout_rp3import_view(request,userid=0): @permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True) @permission_required('rower.is_not_freecoach',fn=get_user_by_userid, raise_exception=True) def workout_stravaimport_view(request,message="",userid=0): + r = getrequestrower(request,userid=userid) if r.user != request.user: messages.error(request,'You can only access your own workouts on the NK Logbook, not those of your athletes') @@ -939,6 +941,7 @@ def workout_stravaimport_view(request,message="",userid=0): res = stravastuff.get_strava_workout_list(request.user) + if (res.status_code != 200): # pragma: no cover if (res.status_code == 401): r = getrower(request.user) @@ -952,6 +955,7 @@ def workout_stravaimport_view(request,message="",userid=0): else: workouts = [] r = getrower(request.user) + rower = r stravaids = [int(item['id']) for item in res.json()] stravadata = [{ 'id':int(item['id']), @@ -995,8 +999,31 @@ def workout_stravaimport_view(request,message="",userid=0): r = item['type'] keys = ['id','distance','duration','starttime','type','name','new'] values = [i,d,ttot,s,r,n,nnn] - res = dict(zip(keys,values)) - workouts.append(res) + res2 = dict(zip(keys,values)) + workouts.append(res2) + + if request.method == "POST": + try: + tdict = dict(request.POST.lists()) + ids = tdict['workoutid'] + stravaids = [int(id) for id in ids] + alldata = {} + for item in res.json(): + alldata[item['id']] = item + for stravaid in stravaids: + csvfilename = 'media/{code}_{stravaid}.csv'.format(code=uuid4().hex[:16],stravaid=stravaid) + result = myqueue( + queue, + fetch_strava_workout, + rower.stravatoken, + stravastuff.oauth_data, + stravaid, + csvfilename, + rower.user.id + ) + messages.info(request,'Strava workout nr {stravaid} will be imported in the background'.format(stravaid=stravaid)) + except KeyError: + pass breadcrumbs = [ { @@ -1014,7 +1041,7 @@ def workout_stravaimport_view(request,message="",userid=0): return render(request,'strava_list_import.html', {'workouts':workouts, - 'rower':r, + 'rower':rower, 'active':'nav-workouts', 'breadcrumbs':breadcrumbs, 'teams':get_my_teams(request.user), diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index d7eb241b..569fffec 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -3502,7 +3502,10 @@ def workout_stats_view(request,id=0,message="",successmessage=""): hrdrift = ((pwr1/hr1)-(pwr2/hr2))/(pwr1/hr1) hrdrift *= 100. if not np.isnan(hrdrift): - hrdrift = int(100*hrdrift)/100. + try: + hrdrift = int(100*hrdrift)/100. + except: + hrdrift = 0 otherstats['hrdrift'] = { 'verbose_name': 'Heart Rate Drift', 'value': hrdrift, From a41672f380e4fd246979bdb07335473c5a35f32d Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 25 Aug 2021 18:20:15 +0200 Subject: [PATCH 2/5] first version of check box strava improt --- rowers/templates/strava_list_import.html | 6 +++++- rowers/tests/testdata/testdata.tcx.gz | Bin 0 -> 4000 bytes rowers/views/importviews.py | 9 ++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 rowers/tests/testdata/testdata.tcx.gz diff --git a/rowers/templates/strava_list_import.html b/rowers/templates/strava_list_import.html index c370abe1..1fe1ea27 100644 --- a/rowers/templates/strava_list_import.html +++ b/rowers/templates/strava_list_import.html @@ -21,7 +21,7 @@
    {% csrf_token %} - Select All New + Select All New @@ -38,7 +38,11 @@ {% for workout in workouts %} diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz new file mode 100644 index 0000000000000000000000000000000000000000..eb1f78b9483d9b8e335e0371f063dc5634ed10ce GIT binary patch literal 4000 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 GfB^tUmO3^7 literal 0 HcmV?d00001 diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index b91b27a7..3240ec6b 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -1021,7 +1021,10 @@ def workout_stravaimport_view(request,message="",userid=0): csvfilename, rower.user.id ) - messages.info(request,'Strava workout nr {stravaid} will be imported in the background'.format(stravaid=stravaid)) + messages.info(request,'Strava workout nr {stravaid} will be imported in the background. It may take a few minutes before it appears.'.format(stravaid=stravaid)) + # done, redirect to workouts list + url = reverse('workouts_view') + return HttpResponseRedirect(url) except KeyError: pass @@ -1036,8 +1039,7 @@ def workout_stravaimport_view(request,message="",userid=0): }, ] - - r = getrower(request.user) + checknew = request.GET.get('selectallnew',False) return render(request,'strava_list_import.html', {'workouts':workouts, @@ -1045,6 +1047,7 @@ def workout_stravaimport_view(request,message="",userid=0): 'active':'nav-workouts', 'breadcrumbs':breadcrumbs, 'teams':get_my_teams(request.user), + 'checknew':checknew, }) return HttpResponse(res) # pragma: no cover From 32501d4da2ec62e6f9733dbe42991ec0ff461e5f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 25 Aug 2021 18:29:07 +0200 Subject: [PATCH 3/5] removing a temp file --- rowers/tests/testdata/testdata.tcx.gz | Bin 4000 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rowers/tests/testdata/testdata.tcx.gz diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz deleted file mode 100644 index eb1f78b9483d9b8e335e0371f063dc5634ed10ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 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 GfB^tUmO3^7 From bed08eb9e835e5c722b05db9195d8865e95ab1f4 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 26 Aug 2021 08:19:04 +0200 Subject: [PATCH 4/5] fix #626 one message --- rowers/views/importviews.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 3240ec6b..2c133ac0 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -1021,8 +1021,8 @@ def workout_stravaimport_view(request,message="",userid=0): csvfilename, rower.user.id ) - messages.info(request,'Strava workout nr {stravaid} will be imported in the background. It may take a few minutes before it appears.'.format(stravaid=stravaid)) # done, redirect to workouts list + messages.info(request,'Your Strava workouts will be imported in the background. It may take a few minutes before it appears.'.format(stravaid=stravaid)) url = reverse('workouts_view') return HttpResponseRedirect(url) except KeyError: From 711275405529ebeafef6dbade6e5be98494ba870 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 26 Aug 2021 08:32:22 +0200 Subject: [PATCH 5/5] catch angle histogram bug fix --- rowers/interactiveplots.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 4aa4b693..3250d4a1 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -2153,8 +2153,12 @@ def interactive_histoall(theworkouts,histoparam,includereststrokes, # throw out nans histopwr = histopwr[~np.isinf(histopwr)] - histopwr = histopwr[histopwr > yaxminima[histoparam]] - histopwr = histopwr[histopwr < yaxmaxima[histoparam]] + if histoparam == 'catch': + histopwr = histopwr[histopwr < yaxminima[histoparam]] + histopwr = histopwr[histopwr > yaxmaxima[histoparam]] + else: + histopwr = histopwr[histopwr > yaxminima[histoparam]] + histopwr = histopwr[histopwr < yaxmaxima[histoparam]] plot = Figure(tools=TOOLS,plot_width=900, toolbar_sticky=False,
    + {% if workout|lookup:'new' == 'NEW' and checknew == 'true' %} + + {% else %} + {% endif %} {{ workout|lookup:'name' }} {{ workout|lookup:'starttime' }}