From be13626fbc854b6cd28331fed5c6917873a73bae Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 17 May 2017 13:34:01 +0200 Subject: [PATCH] strava done --- rowers/templates/strava_list_import.html | 86 ++++++++++++------------ rowers/urls.py | 1 + rowers/views.py | 62 +++++++++++++++-- 3 files changed, 102 insertions(+), 47 deletions(-) diff --git a/rowers/templates/strava_list_import.html b/rowers/templates/strava_list_import.html index a99ea834..b384cd5c 100644 --- a/rowers/templates/strava_list_import.html +++ b/rowers/templates/strava_list_import.html @@ -6,47 +6,47 @@ {% block content %}

Available on Strava

- {% if data %} - - - - - - - - - - - - - {% for workout in data %} - - {% for key,value in workout.items %} - {% if key == "start_date" %} - - {% endif %} - {% if key == "name" %} - - {% endif %} - {% if key == "type" %} - - {% endif %} - {% if key == "distance" %} - - {% endif %} - {% if key == "elapsed_time" %} - - {% endif %} - {% if key == "id" %} - - {% endif %} - {% endfor %} - - - {% endfor %} - -
Import Duration Type Date Distance Name
{{ value }}{{ value }}{{ value }}{{ value }}m{{ value }}Import
- {% else %} -

No workouts found

- {% endif %} +{% if workouts %} +
+ Import all NEW +
+
+

This imports all workouts that have not been imported to rowsandall.com. + The action may take a longer time to process, so please be patient. Click on Import in the list below to import an individual workout. +

+
+ +
+ + + + + + + + + + + + + + {% for workout in workouts %} + + + + + + + + + + + {% endfor %} + +
Import Name Date Duration Distance Type New
+ Import{{ workout|lookup:'name' }}{{ workout|lookup:'starttime' }}{{ workout|lookup:'duration' }} {{ workout|lookup:'distance' }} m{{ workout|lookup:'type' }}{{ workout|lookup:'new' }}
+
+{% else %} +

No workouts found

+{% endif %} {% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index ec5d73a4..b9848e61 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -213,6 +213,7 @@ urlpatterns = [ url(r'^workout/c2import/(?P\d+)/$',views.workout_getc2workout_view), url(r'^workout/c2import/all/$',views.workout_getc2workout_all), url(r'^workout/stravaimport/(?P\d+)/$',views.workout_getstravaworkout_view), + url(r'^workout/stravaimport/all/$',views.workout_getstravaworkout_all), url(r'^workout/sporttracksimport/$',views.workout_sporttracksimport_view), url(r'^workout/sporttracksimport/(?P\d+)/$',views.workout_getsporttracksworkout_view), url(r'^workout/sporttracksimport/all/$',views.workout_getsporttracksworkout_all), diff --git a/rowers/views.py b/rowers/views.py index 460ef645..685e69d8 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -5651,10 +5651,33 @@ def workout_stravaimport_view(request,message=""): url = reverse(workouts_view) return HttpResponseRedirect(url) else: - data = res.json() + workouts = [] + r = Rower.objects.get(user=request.user) + stravaids = [int(item['id']) for item in res.json()] + knownstravaids = uniqify([ + w.uploadedtostrava for w in Workout.objects.filter(user=r) + ]) + newids = [stravaid for stravaid in stravaids if not stravaid in knownstravaids] + + for item in res.json(): + d = int(float(item['distance'])) + i = item['id'] + if i in knownstravaids: + nnn = '' + else: + nnn = 'NEW' + n = item['name'] + ttot = str(datetime.timedelta(seconds=int(float(item['elapsed_time'])))) + s = item['start_date'] + 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) + return render(request,'strava_list_import.html', - {'data':data, + {'workouts':workouts, 'teams':get_my_teams(request.user), }) @@ -6047,14 +6070,45 @@ def workout_getsporttracksworkout_all(request): data = res.json() id,message = add_workout_from_stdata(request.user,sporttracksid,data) - print sporttracksid,id if id==0: messages.error(request,message) else: w = Workout.objects.get(id=id) w.uploadedtosporttracks=sporttracksid - print 'saved' + w.save() + + url = reverse(workouts_view) + return HttpResponseRedirect(url) + + +# Imports all new workouts from SportTracks +@login_required() +def workout_getstravaworkout_all(request): + res = stravastuff.get_strava_workout_list(request.user) + if (res.status_code == 200): + r = Rower.objects.get(user=request.user) + stravaids = [int(item['id']) for item in res.json()] + knownstravaids = uniqify([ + w.uploadedtostrava for w in Workout.objects.filter(user=r) + ]) + newids = [stravaid for stravaid in stravaids if not stravaid in knownstravaids] + + for stravaid in newids: + res = stravastuff.get_strava_workout(request.user,stravaid) + strokedata = res[1] + data = res[0] + + id,message = add_workout_from_strokedata(request.user,stravaid,data,strokedata, + source='strava', + workoutsource='strava') + + if id==0: + messages.error(request,message) + + else: + w = Workout.objects.get(id=id) + w.uploadedtostrava=stravaid w.save() url = reverse(workouts_view)