diff --git a/rowers/rp3stuff.py b/rowers/rp3stuff.py index 5daacef7..2c846ae0 100644 --- a/rowers/rp3stuff.py +++ b/rowers/rp3stuff.py @@ -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'] diff --git a/rowers/templates/rp3_list_import.html b/rowers/templates/rp3_list_import.html index 49b6ff61..b0500f69 100644 --- a/rowers/templates/rp3_list_import.html +++ b/rowers/templates/rp3_list_import.html @@ -21,7 +21,7 @@ {% for workout in workouts %} - Import + Import {{ workout|lookup:'starttime' }} {{ workout|lookup:'new' }} diff --git a/rowers/urls.py b/rowers/urls.py index 44201c87..33253b88 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -543,6 +543,8 @@ urlpatterns = [ re_path(r'^workout/stravaimport/user/(?P\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\d+)/$',views.workout_getc2workout_all,name='workout_getc2workout_all'), + re_path(r'^workout/rp3import/(?P\d+)/(?P\w+)/$',views.workout_getrp3importview, + name='workout_getrp3importview'), re_path(r'^workout/(?P\w+.*)import/(?P\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'), diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 00086950..465ab218 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -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) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index ea822a21..569d4b33 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -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']