Private
Public Access
1
0

adding async option to NK import

This commit is contained in:
Sander Roosendaal
2021-04-19 08:41:48 +02:00
parent 2deb4fcbe3
commit 0c13f798de
9 changed files with 42 additions and 12 deletions

View File

@@ -902,7 +902,7 @@ def make_authorization_url(request):
return HttpResponseRedirect(url)
# Get workout from C2 ID
def get_workout(user,c2id):
def get_workout(user,c2id,do_async=False):
r = Rower.objects.get(user=user)
if (r.c2token == '') or (r.c2token is None):
s = "Token doesn't exist. Need to authorize"

View File

@@ -247,7 +247,7 @@ def get_nk_workout_list(user,fake=False,after=0,before=0):
#
def get_workout(user,nkid):
def get_workout(user,nkid,do_async=False):
r = Rower.objects.get(user=user)
if (r.nktoken == '') or (r.nktoken is None):
s = "Token doesn't exist. Need to authorize"
@@ -260,6 +260,27 @@ def get_workout(user,nkid):
'sessionIds': nkid,
}
if do_async:
res = get_nk_workout_list(r.user)
if res.status_code != 200:
return 0
alldata = {}
for item in res.json():
alldata[item['id']] = item
res = myqueue(
queuehigh,
handle_nk_async_workout,
alldata,
r.user.id,
r.nktoken,
nkid,
0,
r.defaulttimezone,
)
return {},pd.DataFrame()
authorizationstring = str('Bearer ' + r.nktoken)
headers = {'Authorization': authorizationstring,
@@ -292,7 +313,6 @@ def get_workout(user,nkid):
before = before+timedelta(days=1)
before = str(int(before.timestamp())*1000)
after = str(int(after.timestamp())*1000)
print(after)
url = NK_API_LOCATION+"api/v1/sessions/"

View File

@@ -92,7 +92,7 @@ def get_runkeeper_workout_list(user):
return s
# Get workout summary data by Runkeeper ID
def get_workout(user,runkeeperid):
def get_workout(user,runkeeperid,do_async=False):
r = Rower.objects.get(user=user)
if (r.runkeepertoken == '') or (r.runkeepertoken is None):
return custom_exception_handler(401,s)

View File

@@ -97,7 +97,7 @@ def get_sporttracks_workout_list(user):
return s
# Get workout summary data by SportTracks ID
def get_workout(user,sporttracksid):
def get_workout(user,sporttracksid,do_async=False):
r = Rower.objects.get(user=user)
if (r.sporttrackstoken == '') or (r.sporttrackstoken is None):
return custom_exception_handler(401,s)

View File

@@ -382,7 +382,7 @@ def async_get_workout(user,stravaid):
return job
# Get a Strava workout summary data and stroke data by ID
def get_workout(user,stravaid):
def get_workout(user,stravaid,do_async=False):
try:
thetoken = strava_open(user)
except NoTokenError:
@@ -773,7 +773,7 @@ def workout_strava_upload(user,w, quick=False,asynchron=True):
activity_type = mytypes.stravamapping[w.workouttype]
except KeyError:
activity_type = 'Rowing'
with open(tcxfile,'rb') as f:
res,mes = handle_stravaexport(
f,w.name,

View File

@@ -2894,7 +2894,10 @@ def handle_rp3_async_workout(userid,rp3token,rp3id,startdatetime,max_attempts,de
def handle_nk_async_workout(alldata,userid,nktoken,nkid,delaysec,defaulttimezone,debug=False,**kwargs):
time.sleep(delaysec)
data = alldata[nkid]
try:
data = alldata[nkid]
except KeyError:
data = alldata[int(nkid)]
params = {
'sessionIds': nkid,

View File

@@ -70,7 +70,7 @@ def get_underarmour_workout_list(user):
return s
# Get workout summary data by Underarmour ID
def get_workout(user,underarmourid):
def get_workout(user,underarmourid,do_async=False):
r = Rower.objects.get(user=user)
if (r.underarmourtoken == '') or (r.underarmourtoken is None):
return custom_exception_handler(401,s)

View File

@@ -496,6 +496,7 @@ urlpatterns = [
name='workout_getrp3importview'),
re_path(r'^workout/rp3import/all/$',views.workout_getrp3workout_all,name='workout_getrp3workout_all'),
re_path(r'^workout/(?P<source>\w+.*)import/(?P<externalid>\d+)/$',views.workout_getimportview,name='workout_getimportview'),
re_path(r'^workout/(?P<source>\w+.*)import/(?P<externalid>\d+)/async/$',views.workout_getimportview,{'do_async':True},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'),
re_path(r'^workout/sporttracksimport/$',views.workout_sporttracksimport_view,name='workout_sporttracksimport_view'),

View File

@@ -2001,9 +2001,15 @@ def workout_getrp3importview(request,externalid):
return HttpResponseRedirect(url)
@login_required()
def workout_getimportview(request,externalid,source = 'c2'):
data,strokedata = importsources[source].get_workout(request.user,externalid)
def workout_getimportview(request,externalid,source = 'c2',do_async=False):
data,strokedata = importsources[source].get_workout(request.user,externalid,
do_async=do_async)
if do_async:
messages.info(request,"Your workout will be imported in the background")
url = reverse('workouts_view')
return HttpResponseRedirect(url)
if not data:
messages.error(request,"No strokedata received")
url = reverse('workouts_view')