Private
Public Access
1
0

adding date filter to NK import

This commit is contained in:
Sander Roosendaal
2021-05-01 14:57:36 +02:00
parent 7763969704
commit c3ee36702c
5 changed files with 68 additions and 11 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -6,17 +6,28 @@
{% block main %}
<h1>Available on NK Logbook</h1>
{% if workouts %}
<ul class="main-content">
{% if workouts %}
<li>
<a href="/rowers/workout/nkimport/all/" class="blue button">Import all NEW</a>
<a href="/rowers/workout/nkimport/all/{{ startdate }}/{{ enddate }}" class="blue button">Import all NEW</a>
</li>
<li class="grid_3">
<p>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.
</p>
</li>
{% endif %}
<li class="grid_2">
<form enctype="multipart/form-data" method="post">
<table>
{{ dateform.as_table }}
</table>
{% csrf_token %}
<input name='daterange' type="submit" value="Select Dates">
</form>
</li>
{% if workouts %}
<li class="grid_4">
<table width="70%" class="listtable">
<thead>
@@ -45,12 +56,15 @@
</tbody>
</table>
</li>
</ul>
{% else %}
<p>
No workouts found
</p>
{% else %}
<li class="grid_4">
<p>
No workouts found
</p>
</li>
{% endif %}
</ul>
{% endblock %}
{% block sidebar %}

View File

@@ -494,6 +494,8 @@ urlpatterns = [
re_path(r'^workout/nkimport/$',views.workout_nkimport_view,name='workout_nkimport_view'),
re_path(r'^workout/nkimport/(?P<after>\d+)/(?P<before>\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<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workout_getnkworkout_all,
name='workout_getnkworkout_all'),
re_path(r'^workout/rp3import/(?P<externalid>\d+)/$',views.workout_getrp3importview,
name='workout_getrp3importview'),
re_path(r'^workout/rp3import/all/$',views.workout_getrp3workout_all,name='workout_getrp3workout_all'),

View File

@@ -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)