getting started importing RP3 workout
This commit is contained in:
@@ -18,7 +18,8 @@ from rowsandall_app.settings import (
|
||||
STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET,
|
||||
RP3_CLIENT_ID, RP3_CLIENT_SECRET,
|
||||
RP3_REDIRECT_URI,RP3_CLIENT_KEY,
|
||||
RP3_CLIENT_ID, RP3_CLIENT_KEY, RP3_REDIRECT_URI, RP3_CLIENT_SECRET
|
||||
RP3_CLIENT_ID, RP3_CLIENT_KEY, RP3_REDIRECT_URI, RP3_CLIENT_SECRET,
|
||||
UPLOAD_SERVICE_URL, UPLOAD_SERVICE_SECRET
|
||||
)
|
||||
|
||||
|
||||
@@ -128,7 +129,7 @@ def get_rp3_workout_token(workout_id,auth_token,waittime=3,max_attempts=20):
|
||||
headers = {'Authorization': 'Bearer ' + auth_token }
|
||||
|
||||
get_download_link = """{
|
||||
download(workout_id: """ + str(workout_id) + """, type:tcx){
|
||||
download(workout_id: """ + str(workout_id) + """, type:csv){
|
||||
id
|
||||
status
|
||||
link
|
||||
@@ -169,3 +170,37 @@ def get_rp3_workout_link(user,workout_id,waittime=3,max_attempts=20):
|
||||
auth_token = rp3_open(user)
|
||||
|
||||
return get_rp3_workout_token(workout_id,auth_token,waittime=waittime,max_attempts=max_attempts)
|
||||
|
||||
def get_rp3_workout(user,workout_id,startdatetime=None):
|
||||
url = get_rp3_workout_link(user,workout_id)
|
||||
filename = 'media/RP3Import_'+str(workout_id)+'.csv'
|
||||
|
||||
r = Rower.objects.get(user=user)
|
||||
auth_token = rp3_open(user)
|
||||
|
||||
status_code = download_rp3_file(url, auth_token, filename)
|
||||
|
||||
if status_code != 200:
|
||||
return 0
|
||||
|
||||
userid = user.id
|
||||
|
||||
uploadoptions = {
|
||||
'secret': UPLOAD_SERVICE_SECRET,
|
||||
'user': userid,
|
||||
'file': filename,
|
||||
'workouttype':'dynamic',
|
||||
'boattype':'1x',
|
||||
'rp3id':workout_id,
|
||||
}
|
||||
|
||||
session = requests.session()
|
||||
newHeaders = {'Content-type': 'application/json', 'Accept': 'text/plain'}
|
||||
session.headers.update(newHeaders)
|
||||
|
||||
response = session.post(UPLOAD_SERVICE_URL,json=uploadoptions)
|
||||
|
||||
if response.status_code != 200:
|
||||
return 0
|
||||
|
||||
return response.json()['id']
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
{% for workout in workouts %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="/rowers/workout/rp3import/{{ workout|lookup:'id' }}/">Import</a></td>
|
||||
<a href="/rowers/workout/rp3import/{{ workout|lookup:'id' }}/{{ workout|lookup:'starttime'}}/">Import</a></td>
|
||||
<td>{{ workout|lookup:'starttime' }}</td>
|
||||
<td>{{ workout|lookup:'new' }}</td>
|
||||
</tr>
|
||||
|
||||
@@ -543,6 +543,8 @@ urlpatterns = [
|
||||
re_path(r'^workout/stravaimport/user/(?P<userid>\d+)/$',views.workout_stravaimport_view,name='workout_stravaimport_view'),
|
||||
re_path(r'^workout/c2import/all/$',views.workout_getc2workout_all,name='workout_getc2workout_all'),
|
||||
re_path(r'^workout/c2import/all/(?P<page>\d+)/$',views.workout_getc2workout_all,name='workout_getc2workout_all'),
|
||||
re_path(r'^workout/rp3import/(?P<externalid>\d+)/(?P<startdatetime>\w+)/$',views.workout_getrp3importview,
|
||||
name='workout_getrp3importview'),
|
||||
re_path(r'^workout/(?P<source>\w+.*)import/(?P<externalid>\d+)/$',views.workout_getimportview,name='workout_getimportview'),
|
||||
re_path(r'^workout/stravaimport/all/$',views.workout_getstravaworkout_all,name='workout_getstravaworkout_all'),
|
||||
re_path(r'^workout/stravaimport/next/$',views.workout_getstravaworkout_next,name='workout_getstravaworkout_next'),
|
||||
|
||||
@@ -1693,7 +1693,6 @@ def workout_getc2workout_all(request,page=1,message=""):
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
# List of workouts available on Concept2 logbook - for import
|
||||
@login_required()
|
||||
@permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True)
|
||||
@@ -1776,6 +1775,10 @@ importsources = {
|
||||
'underarmour':underarmourstuff
|
||||
}
|
||||
|
||||
@login_required()
|
||||
def workout_getrp3importview(request,externalid,startdatetime):
|
||||
return 1
|
||||
|
||||
@login_required()
|
||||
def workout_getimportview(request,externalid,source = 'c2'):
|
||||
data,strokedata = importsources[source].get_workout(request.user,externalid)
|
||||
|
||||
@@ -4775,6 +4775,11 @@ def workout_upload_api(request):
|
||||
except KeyError:
|
||||
c2id = ''
|
||||
|
||||
try:
|
||||
rp3id = post_data['rp3id']
|
||||
except KeyError:
|
||||
rp3id = ''
|
||||
|
||||
|
||||
try:
|
||||
garminid = post_data['garminid']
|
||||
|
||||
Reference in New Issue
Block a user