rp3, untested
This commit is contained in:
@@ -725,11 +725,9 @@ def rower_process_rp3callback(request): # pragma: no cover
|
||||
url = reverse('rower_exportsettings_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
res = rp3stuff.get_token(code)
|
||||
rp3_integration = RP3Integration(request.user)
|
||||
access_token, expires_in, refresh_token = rp3_integration.get_token(code)
|
||||
|
||||
access_token = res[0]
|
||||
expires_in = res[1]
|
||||
refresh_token = res[2]
|
||||
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
|
||||
|
||||
r = getrower(request.user)
|
||||
@@ -803,56 +801,39 @@ def rower_process_testcallback(request): # pragma: no cover
|
||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||
def workout_rp3import_view(request, userid=0):
|
||||
r = getrequestrower(request, userid=userid)
|
||||
rp3_integration = RP3Integration(request.user)
|
||||
|
||||
try:
|
||||
_ = rp3stuff.rp3_open(request.user)
|
||||
_ = rp3_integration.open()
|
||||
except NoTokenError: # pragma: no cover
|
||||
url = reverse('rower_rp3_authorize')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
res = rp3stuff.get_rp3_workout_list(request.user)
|
||||
workouts = rp3_integration.get_workout_list()
|
||||
datedict = {}
|
||||
for workout in workouts:
|
||||
datedict[workout['id']] = workout['starttime']
|
||||
|
||||
if (res.status_code != 200): # pragma: no cover
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.stravatoken == '') or (r.stravatoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
message = "Something went wrong in workout_rp3import_view"
|
||||
messages.error(request, message)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts_list = pd.json_normalize(res.json()['data']['workouts'])
|
||||
if request.method == "POST":
|
||||
try: # pragma: no cover
|
||||
tdict = dict(request.POST.lists())
|
||||
ids = tdict['workoutid']
|
||||
rp3ids = [int(id) for id in ids]
|
||||
|
||||
knownrp3ids = uniqify([
|
||||
w.uploadedtorp3 for w in Workout.objects.filter(user=r)
|
||||
])
|
||||
|
||||
workouts = []
|
||||
|
||||
for key, data in workouts_list.iterrows():
|
||||
try:
|
||||
i = data['id']
|
||||
for rp3id in rp3ids:
|
||||
rp3_integration.get_workout(rp3id,startdatetime=datedict[rp3id])
|
||||
# done, redirect to workouts list
|
||||
messages.info(
|
||||
request,
|
||||
'Your RP3 workouts will be imported in the background.'
|
||||
' It may take a few minutes before they appear.')
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
except KeyError: # pragma: no cover
|
||||
i = 0
|
||||
if i in knownrp3ids: # pragma: no cover
|
||||
nnn = ''
|
||||
else:
|
||||
nnn = 'NEW'
|
||||
|
||||
try:
|
||||
s = data['executed_at']
|
||||
except KeyError: # pragma: no cover
|
||||
s = ''
|
||||
|
||||
keys = ['id', 'starttime', 'new']
|
||||
values = [i, s, nnn]
|
||||
|
||||
res = dict(zip(keys, values))
|
||||
|
||||
workouts.append(res)
|
||||
pass
|
||||
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url': '/rowers/list-workouts/',
|
||||
@@ -864,13 +845,18 @@ def workout_rp3import_view(request, userid=0):
|
||||
},
|
||||
]
|
||||
|
||||
return render(request, 'rp3_list_import.html',
|
||||
checknew = request.GET.get('selectallnew', False)
|
||||
|
||||
|
||||
return render(request, 'list_import.html',
|
||||
{
|
||||
'workouts': workouts,
|
||||
'rower': r,
|
||||
'active': 'nav-workouts',
|
||||
'breadcrumbs': breadcrumbs,
|
||||
'teams': get_my_teams(request.user)
|
||||
'teams': get_my_teams(request.user),
|
||||
'integration': 'RP3',
|
||||
'checknew': checknew,
|
||||
})
|
||||
|
||||
# The page where you select which Strava workout to import
|
||||
@@ -1461,7 +1447,8 @@ def workout_getrp3workout_all(request): # pragma: no cover
|
||||
|
||||
r = getrequestrower(request)
|
||||
|
||||
result = rp3stuff.get_rp3_workouts(r, do_async=True)
|
||||
rp3_integration = RP3Integration(request.user)
|
||||
result = rp3_integration.get_workouts()
|
||||
|
||||
if result:
|
||||
messages.info(
|
||||
@@ -1582,21 +1569,12 @@ def workout_getrp3importview(request, externalid):
|
||||
r = getrequestrower(request)
|
||||
if r.user != request.user: # pragma: no cover
|
||||
messages.error(
|
||||
request, 'You can only access your own workouts on the NK Logbook, not those of your athletes')
|
||||
request, 'You can only access your own workouts on the RP3 Logbook, not those of your athletes')
|
||||
url = reverse('workout_rp3import_view', kwargs={
|
||||
'userid': request.user.id})
|
||||
return HttpResponseRedirect(url)
|
||||
token = rp3stuff.rp3_open(r.user)
|
||||
startdatetime = request.GET.get('startdatetime')
|
||||
|
||||
_ = myqueue(queuehigh,
|
||||
handle_rp3_async_workout,
|
||||
r.user.id,
|
||||
token,
|
||||
externalid,
|
||||
startdatetime,
|
||||
20,
|
||||
)
|
||||
rp3_integration = RP3Integration(request.user)
|
||||
result = rp3_integration.get_workout(externalid)
|
||||
|
||||
messages.info(request, 'The workout will be imported in the background')
|
||||
|
||||
@@ -1684,8 +1662,11 @@ def workout_getimportview(request, externalid, source='c2', do_async=True):
|
||||
@login_required()
|
||||
def workout_getsporttracksworkout_all(request):
|
||||
st_integration = SportTracksIntegration(request.user)
|
||||
_ = st_integration.get_workouts()
|
||||
messages.info(request,"Your SportTracks workouts will be imported in the background")
|
||||
try:
|
||||
_ = st_integration.get_workouts()
|
||||
messages.info(request,"Your SportTracks workouts will be imported in the background")
|
||||
except NoTokenError:
|
||||
messages.error(request,"You have to connect to SportTracks first")
|
||||
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
Reference in New Issue
Block a user