Private
Public Access
1
0

passing tests with mock server for nk workouts list

This commit is contained in:
Sander Roosendaal
2021-03-30 09:05:26 +02:00
parent 68edfe5a94
commit 0cd8fabc13
11 changed files with 523 additions and 7 deletions

View File

@@ -411,6 +411,8 @@ def rower_nk_authorize(request):
return HttpResponseRedirect(url)
# Concept2 authorization
@login_required()
def rower_c2_authorize(request):
@@ -679,7 +681,7 @@ def rower_process_callback(request):
message = "The resource owner or authorization server denied the request"
messages.error(request,message)
url = reverse('workouts_view')
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
@@ -689,7 +691,7 @@ def rower_process_callback(request):
message += ' Contact info@rowsandall.com if this behavior persists.'
messages.error(request,message)
url = reverse('workouts_view')
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
@@ -775,11 +777,105 @@ def rower_process_garmincallback(request):
@login_required()
def rower_process_nkcallback(request):
# do stuff
try:
code = request.get['code']
res = nkstuff.get_token['code']
except MultiValueDictKeyError:
message = "The resource owner or authorization server denied the request"
messages.error(request,message)
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
access_token = res[0]
if access_token == 0:
message = res[1]
message += ' Contact support@rowsandall.com if this behavior persists'
messages.error(request,message)
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
expires_in = res[1]
refresh_token = res[2]
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
r = getrower(request.user)
r.nktoken = access_token
r.nktokenexpirydate = expirydatetime
r.nkrefreshtoken = refresh_token
r.save()
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
messages.info(request,successmessage)
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
@login_required()
@permission_required('rower.is_coach',fn=get_user_by_userid, raise_exception=True)
def workout_nkimport_view(request,userid=0):
r = getrequestrower(request,userid=userid)
try:
thetoken = nk_open(request.user)
except NoTokenError:
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
res = nkstuff.get_nk_workout_list(request.user)
if (res.status_code != 200):
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_stravaimport_view"
messages.error(request,message)
url = reverse('workouts_view')
return HttpResponseRedirect(url)
# get NK IDs
nkdata = [{
'id':int(item['id']),
'elapsed_time':item['elapsedTime'],
'start_date':item['startTime'],
} for item in res.json()]
workouts = []
for item in res.json():
d = int(float(item['totalDistanceGps'])) # could also be Impeller
i = item['id']
n = item['name']
nnn = ''
ttot = str(datetime.timedelta(seconds=int(float(item['elapsedTime'])/1000.)))
s = item['startTime']
keys = ['id','distance','duration','starttime','name','new']
values = [i,d,ttot,s,n,nnn]
res = dict(zip(keys, values))
workouts.append(res)
breadcrumbs = [
{
'url':'/rowers/list-workouts/',
'name':'Workouts'
},
{
'url':reverse('workout_nkimport_view'),
'name':'Strava'
},
]
return render(request,'nk_list_import.html',
{
'workouts':workouts,
'rower':r,
'active':'nav-workouts',
'breadcrumbs':breadcrumbs,
'teams':get_my_teams(request.user)
})
# Process Strava Callback
@login_required()

View File

@@ -154,7 +154,9 @@ import os,sys
import datetime
import iso8601
import rowers.c2stuff as c2stuff
import rowers.nkstuff as nkstuff
from rowers.c2stuff import c2_open
from rowers.nkstuff import nk_open
from rowers.rp3stuff import rp3_open
from rowers.runkeeperstuff import runkeeper_open
from rowers.sporttracksstuff import sporttracks_open
@@ -186,7 +188,7 @@ from rowsandall_app.settings import (
BRAINTREE_MERCHANT_ID,BRAINTREE_PUBLIC_KEY,BRAINTREE_PRIVATE_KEY,
PAYMENT_PROCESSING_ON,
RECAPTCHA_SITE_KEY, RECAPTCHA_SITE_SECRET,
NK_REDIRECT_URI, NK_ClIENT_ID, NK_CLIENT_SECRET
NK_REDIRECT_URI, NK_CLIENT_ID, NK_CLIENT_SECRET
)
#from rowers.tasks_standalone import addcomment2