Private
Public Access
1
0

strava done

This commit is contained in:
Sander Roosendaal
2017-05-17 13:34:01 +02:00
parent 12d95cfe43
commit be13626fbc
3 changed files with 102 additions and 47 deletions

View File

@@ -6,47 +6,47 @@
{% block content %}
<h1>Available on Strava</h1>
{% if data %}
<table width="70%" class="listtable">
<thead>
<tr>
<th> Import </th>
<th> Duration </th>
<th> Type</th>
<th> Date</th>
<th> Distance </th>
<th> Name</th>
</tr>
</thead>
<tbody>
{% for workout in data %}
<tr>
{% for key,value in workout.items %}
{% if key == "start_date" %}
<td>{{ value }}</td>
{% endif %}
{% if key == "name" %}
<td>{{ value }}</td>
{% endif %}
{% if key == "type" %}
<td>{{ value }}</td>
{% endif %}
{% if key == "distance" %}
<td>{{ value }}m</td>
{% endif %}
{% if key == "elapsed_time" %}
<td>{{ value }}</td>
{% endif %}
{% if key == "id" %}
<td><a href="/rowers/workout/stravaimport/{{ value }}/">Import</a></td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p> No workouts found </p>
{% endif %}
{% if workouts %}
<div class="grid_2 alpha ">
<a href="/rowers/workout/stravaimport/all/" class="button gray">Import all NEW</a>
</div>
<div class="grid_10 omega">
<p>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.
</p>
</div>
<div class="grid_12 alpha">
<table width="70%" class="listtable">
<thead>
<tr>
<th> Import </th>
<th> Name</th>
<th> Date</th>
<th> Duration </th>
<th> Distance </th>
<th> Type</th>
<th> New</th>
</tr>
</thead>
<tbody>
{% for workout in workouts %}
<tr>
<td>
<a href="/rowers/workout/stravaimport/{{ workout|lookup:'id' }}/">Import</a></td>
<td>{{ workout|lookup:'name' }}</td>
<td>{{ workout|lookup:'starttime' }}</td>
<td>{{ workout|lookup:'duration' }} </td>
<td>{{ workout|lookup:'distance' }} m</td>
<td>{{ workout|lookup:'type' }}</td>
<td>{{ workout|lookup:'new' }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<p> No workouts found </p>
{% endif %}
{% endblock %}

View File

@@ -213,6 +213,7 @@ urlpatterns = [
url(r'^workout/c2import/(?P<c2id>\d+)/$',views.workout_getc2workout_view),
url(r'^workout/c2import/all/$',views.workout_getc2workout_all),
url(r'^workout/stravaimport/(?P<stravaid>\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<sporttracksid>\d+)/$',views.workout_getsporttracksworkout_view),
url(r'^workout/sporttracksimport/all/$',views.workout_getsporttracksworkout_all),

View File

@@ -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)