adding async option to NK import
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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/"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user