From c3ee36702c8323fdbe2c8570d83cbb4d0e9e25db Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 1 May 2021 14:57:36 +0200 Subject: [PATCH] adding date filter to NK import --- rowers/nkstuff.py | 4 +-- rowers/plannedsessions.py | 4 +++ rowers/templates/nk_list_import.html | 28 ++++++++++++++----- rowers/urls.py | 2 ++ rowers/views/importviews.py | 41 ++++++++++++++++++++++++++-- 5 files changed, 68 insertions(+), 11 deletions(-) diff --git a/rowers/nkstuff.py b/rowers/nkstuff.py index 5ad04b85..eac4055e 100644 --- a/rowers/nkstuff.py +++ b/rowers/nkstuff.py @@ -112,13 +112,13 @@ def nk_open(user): return thetoken -def get_nk_workouts(rower, do_async=True): +def get_nk_workouts(rower, do_async=True,before=0,after=0): try: thetoken = nk_open(rower.user) except NoTokenError: # pragma: no cover return 0 - res = get_nk_workout_list(rower.user) + res = get_nk_workout_list(rower.user,before=before,after=after) if res.status_code != 200: # pragma: no cover return 0 diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index fc4de918..eb8f65cc 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -879,9 +879,13 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='', daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)') + if timeperiod=='today': # pragma: no cover startdate=date.today() enddate=date.today() + elif timeperiod=='last30': + startdate = date.today()-timezone.timedelta(days=30) + enddate = date.today()+timezone.timedelta(days=1) elif timeperiod=='tomorrow': # pragma: no cover startdate=date.today()+timezone.timedelta(days=1) enddate=date.today()+timezone.timedelta(days=1) diff --git a/rowers/templates/nk_list_import.html b/rowers/templates/nk_list_import.html index 3ad6a8b3..a9b43902 100644 --- a/rowers/templates/nk_list_import.html +++ b/rowers/templates/nk_list_import.html @@ -6,17 +6,28 @@ {% block main %}

Available on NK Logbook

-{% if workouts %}
    +{% if workouts %}
  • - Import all NEW + Import all NEW
  • This imports all workouts that have not been imported to rowsandall.com. The action may take a longer time to process, so please be patient. Click on Import in the list below to import an individual workout.

  • + {% endif %} +
  • +
    + + {{ dateform.as_table }} +
    + {% csrf_token %} + +
    +
  • +{% if workouts %}
  • @@ -45,12 +56,15 @@
  • -
-{% else %} -

- No workouts found -

+ {% else %} +
  • +

    + No workouts found +

    +
  • {% endif %} + + {% endblock %} {% block sidebar %} diff --git a/rowers/urls.py b/rowers/urls.py index 2c9a95f4..0377375f 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -494,6 +494,8 @@ urlpatterns = [ re_path(r'^workout/nkimport/$',views.workout_nkimport_view,name='workout_nkimport_view'), re_path(r'^workout/nkimport/(?P\d+)/(?P\d+)/$',views.workout_nkimport_view,name='workout_nkimport_view'), re_path(r'^workout/nkimport/all/$',views.workout_getnkworkout_all,name='workout_getnkworkout_all'), + re_path(r'^workout/nkimport/all/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/$',views.workout_getnkworkout_all, + name='workout_getnkworkout_all'), re_path(r'^workout/rp3import/(?P\d+)/$',views.workout_getrp3importview, name='workout_getrp3importview'), re_path(r'^workout/rp3import/all/$',views.workout_getrp3workout_all,name='workout_getrp3workout_all'), diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 06ea12bf..343ac1bd 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -4,6 +4,7 @@ from __future__ import print_function from __future__ import unicode_literals from rowers.views.statements import * +from rowers.plannedsessions import get_dates_timeperiod import numpy @@ -817,7 +818,14 @@ def rower_process_nkcallback(request): # pragma: no cover return HttpResponseRedirect(url) @login_required() -def workout_getnkworkout_all(request): +def workout_getnkworkout_all(request,startdatestring='',enddatestring=''): + startdate,enddate = get_dates_timeperiod(request,startdatestring=startdatestring,enddatestring=enddatestring) + before = arrow.get(enddate) + before = str(int(before.timestamp()*1000)) + + after = arrow.get(startdate) + after = str(int(after.timestamp()*1000)) + try: thetoken = nk_open(request.user) except NoTokenError: # pragma: no cover @@ -825,7 +833,7 @@ def workout_getnkworkout_all(request): r = getrequestrower(request) - result = nkstuff.get_nk_workouts(r,do_async=True) + result = nkstuff.get_nk_workouts(r,do_async=True,before=before,after=after) if result: messages.info(request,"Your NK workouts will be imported in the coming few minutes") @@ -838,12 +846,38 @@ def workout_getnkworkout_all(request): @login_required() @permission_required('rower.is_coach',fn=get_user_by_userid, raise_exception=True) def workout_nkimport_view(request,userid=0,after=0,before=0): + startdate,enddate = get_dates_timeperiod(request,defaulttimeperiod='last30') r = getrequestrower(request,userid=userid) try: thetoken = nk_open(request.user) except NoTokenError: # pragma: no cover return HttpResponseRedirect("/rowers/me/nkauthorize/") + if request.method == 'POST': + dateform = DateRangeForm(request.POST) + if dateform.is_valid(): + startdate = dateform.cleaned_data['startdate'] + enddate = dateform.cleaned_data['enddate']+datetime.timedelta(days=1) + else: + dateform = DateRangeForm(initial={ + 'startdate':startdate, + 'enddate':enddate, + }) + + if enddate < startdate: # pragma: no cover + s = enddate + enddate = startdate + startdate = s + + startdatestring = startdate.strftime('%Y-%m-%d') + enddatestring = enddate.strftime('%Y-%m-%d') + + before = arrow.get(enddate) + before = str(int(before.timestamp()*1000)) + + after = arrow.get(startdate) + after = str(int(after.timestamp()*1000)) + res = nkstuff.get_nk_workout_list(request.user,before=before,after=after) if (res.status_code != 200): # pragma: no cover @@ -921,6 +955,9 @@ def workout_nkimport_view(request,userid=0,after=0,before=0): { 'workouts':workouts, 'rower':r, + 'dateform':dateform, + 'startdate':startdate, + 'enddate':enddate, 'active':'nav-workouts', 'breadcrumbs':breadcrumbs, 'teams':get_my_teams(request.user)