diff --git a/rowers/tasks.py b/rowers/tasks.py index 870028f9..a07a41a0 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -3194,7 +3194,7 @@ def df_from_summary(data): spms = [0] try: hrs = [splits[0]['heart_rate']['average']] - except (KeyError, TypeError): # pragma: no cover + except (KeyError, TypeError, IndexError): # pragma: no cover hrs = [0] for split in splits: @@ -3317,8 +3317,11 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone df = df_from_summary(data) else: #dologging('debuglog.log',json.dumps(s.json())) - - strokedata = pd.DataFrame.from_dict(s.json()['data']) + try: + strokedata = pd.DataFrame.from_dict(s.json()['data']) + except AttributeError: + dologging('debuglog.log','No stroke data in stroke data') + return 0 try: res = make_cumvalues(0.1*strokedata['t']) diff --git a/rowers/templates/nk_list_import.html b/rowers/templates/nk_list_import.html index a9b43902..7d62f57c 100644 --- a/rowers/templates/nk_list_import.html +++ b/rowers/templates/nk_list_import.html @@ -29,6 +29,10 @@ {% if workouts %}
  • +
    + {% csrf_token %} + + Select All New @@ -44,7 +48,12 @@ {% for workout in workouts %} + {% if workout|lookup:'new' == 'NEW' and checknew == 'true' %} + + {% else %} + + {% endif %} + @@ -55,6 +64,7 @@ {% endfor %}
    - Import {{ workout|lookuplong:'name' }} {{ workout|lookuplong:'starttime' }} {{ workout|lookup:'duration' }}
    +
  • {% else %}
  • diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 3021d9b9..fc8f7d1e 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -637,6 +637,35 @@ def workout_nkimport_view(request,userid=0,after=0,before=0): workouts = workouts[::-1] + if request.method == 'POST': + try: + tdict = dict(request.POST.lists()) + ids = tdict['workoutid'] + nkids = [int(id) for id in ids] + alldata = {} + + for item in res.json(): + alldata[item['id']] = item + counter = 0 + for nkid in nkids: + csvfilename = 'media/{code}_{nkid}.csv'.format(code=uuid4().hex[:16],nkid=nkid) + result = myqueue( + queue, + handle_nk_async_workout, + alldata, + r.user.id, + r.nktoken, + nkid, + counter, + r.defaulttimezone + ) + counter = counter+1 + messages.info(request,'Your NK logbook workouts will be imported in the background. It may take a few minutes before it appears.') + url = reverse('workouts_view') + return HttpResponseRedirect(url) + except KeyError: + pass + breadcrumbs = [ { 'url':'/rowers/list-workouts/', @@ -648,6 +677,8 @@ def workout_nkimport_view(request,userid=0,after=0,before=0): }, ] + checknew = request.GET.get('selectallnew',False) + return render(request,'nk_list_import.html', { 'workouts':workouts, @@ -657,7 +688,8 @@ def workout_nkimport_view(request,userid=0,after=0,before=0): 'enddate':enddate, 'active':'nav-workouts', 'breadcrumbs':breadcrumbs, - 'teams':get_my_teams(request.user) + 'teams':get_my_teams(request.user), + 'checknew':checknew, }) # Process Strava Callback diff --git a/rowers/views/statements.py b/rowers/views/statements.py index 98ace3a6..3ae8441c 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -222,6 +222,7 @@ from rowers.tasks import ( handle_sendemail_ical, handle_c2_async_workout, handle_send_email_instantplan_notification, + handle_nk_async_workout, ) from scipy.signal import savgol_filter