Private
Public Access
1
0

Merge branch 'feature/nkimprovements' into develop

This commit is contained in:
Sander Roosendaal
2021-05-01 16:14:31 +02:00
7 changed files with 73 additions and 16 deletions
+5 -5
View File
@@ -112,13 +112,13 @@ def nk_open(user):
return thetoken return thetoken
def get_nk_workouts(rower, do_async=True): def get_nk_workouts(rower, do_async=True,before=0,after=0):
try: try:
thetoken = nk_open(rower.user) thetoken = nk_open(rower.user)
except NoTokenError: # pragma: no cover except NoTokenError: # pragma: no cover
return 0 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 if res.status_code != 200: # pragma: no cover
return 0 return 0
@@ -221,11 +221,11 @@ def get_nk_workout_list(user,fake=False,after=0,before=0):
return custom_exception_handler(401,s) return custom_exception_handler(401,s)
else: else:
# ready to fetch. Hurray # ready to fetch. Hurray
if not before: if not before: # pragma: no cover
before = arrow.now()+timedelta(days=1) before = arrow.now()+timedelta(days=1)
before = str(int(before.timestamp())*1000) before = str(int(before.timestamp())*1000)
if not after: if not after: # pragma: no cover
after = arrow.now()-timedelta(days=30) after = arrow.now()-timedelta(days=7)
after = str(int(after.timestamp())*1000) after = str(int(after.timestamp())*1000)
authorizationstring = str('Bearer ' + r.nktoken) authorizationstring = str('Bearer ' + r.nktoken)
headers = {'Authorization': authorizationstring, headers = {'Authorization': authorizationstring,
+4
View File
@@ -879,9 +879,13 @@ def get_dates_timeperiod(request,startdatestring='',enddatestring='',
daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)') daterangetester = re.compile('^(\d+-\d+-\d+)\/(\d+-\d+-\d+)')
if timeperiod=='today': # pragma: no cover if timeperiod=='today': # pragma: no cover
startdate=date.today() startdate=date.today()
enddate=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 elif timeperiod=='tomorrow': # pragma: no cover
startdate=date.today()+timezone.timedelta(days=1) startdate=date.today()+timezone.timedelta(days=1)
enddate=date.today()+timezone.timedelta(days=1) enddate=date.today()+timezone.timedelta(days=1)
+17 -3
View File
@@ -6,17 +6,28 @@
{% block main %} {% block main %}
<h1>Available on NK Logbook</h1> <h1>Available on NK Logbook</h1>
{% if workouts %}
<ul class="main-content"> <ul class="main-content">
{% if workouts %}
<li> <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>
<li class="grid_3"> <li class="grid_3">
<p>This imports all workouts that have not been imported to rowsandall.com. <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. 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> </p>
</li> </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"> <li class="grid_4">
<table width="70%" class="listtable"> <table width="70%" class="listtable">
<thead> <thead>
@@ -45,12 +56,15 @@
</tbody> </tbody>
</table> </table>
</li> </li>
</ul>
{% else %} {% else %}
<li class="grid_4">
<p> <p>
No workouts found No workouts found
</p> </p>
</li>
{% endif %} {% endif %}
</ul>
{% endblock %} {% endblock %}
{% block sidebar %} {% block sidebar %}
+1 -1
View File
@@ -622,7 +622,7 @@ def do_sync(w,options, quick=False):
do_tp_export = w.user.trainingpeaks_auto_export do_tp_export = w.user.trainingpeaks_auto_export
try: try: # pragma: no cover
upload_to_tp = options['upload_to_SportTracks'] or do_tp_export upload_to_tp = options['upload_to_SportTracks'] or do_tp_export
do_tp_export = upload_to_tp do_tp_export = upload_to_tp
except KeyError: except KeyError:
+2
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/$',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/(?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/$',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, re_path(r'^workout/rp3import/(?P<externalid>\d+)/$',views.workout_getrp3importview,
name='workout_getrp3importview'), name='workout_getrp3importview'),
re_path(r'^workout/rp3import/all/$',views.workout_getrp3workout_all,name='workout_getrp3workout_all'), re_path(r'^workout/rp3import/all/$',views.workout_getrp3workout_all,name='workout_getrp3workout_all'),
+1 -1
View File
@@ -2266,7 +2266,7 @@ def history_view(request,userid=0):
lastyear = datetime.datetime(year=today.year-1,month=today.month,day=today.day) lastyear = datetime.datetime(year=today.year-1,month=today.month,day=today.day)
firstmay = datetime.datetime(year=today.year,month=5,day=1).astimezone(usertimezone) firstmay = datetime.datetime(year=today.year,month=5,day=1).astimezone(usertimezone)
if firstmay>today: if firstmay>today: # pragma: no cover
firstmay = datetime.datetime(year=today.year-1,month=5,day=1) firstmay = datetime.datetime(year=today.year-1,month=5,day=1)
+39 -2
View File
@@ -4,6 +4,7 @@ from __future__ import print_function
from __future__ import unicode_literals from __future__ import unicode_literals
from rowers.views.statements import * from rowers.views.statements import *
from rowers.plannedsessions import get_dates_timeperiod
import numpy import numpy
@@ -817,7 +818,14 @@ def rower_process_nkcallback(request): # pragma: no cover
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@login_required() @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: try:
thetoken = nk_open(request.user) thetoken = nk_open(request.user)
except NoTokenError: # pragma: no cover except NoTokenError: # pragma: no cover
@@ -825,7 +833,7 @@ def workout_getnkworkout_all(request):
r = getrequestrower(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: if result:
messages.info(request,"Your NK workouts will be imported in the coming few minutes") 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() @login_required()
@permission_required('rower.is_coach',fn=get_user_by_userid, raise_exception=True) @permission_required('rower.is_coach',fn=get_user_by_userid, raise_exception=True)
def workout_nkimport_view(request,userid=0,after=0,before=0): def workout_nkimport_view(request,userid=0,after=0,before=0):
startdate,enddate = get_dates_timeperiod(request,defaulttimeperiod='last30')
r = getrequestrower(request,userid=userid) r = getrequestrower(request,userid=userid)
try: try:
thetoken = nk_open(request.user) thetoken = nk_open(request.user)
except NoTokenError: # pragma: no cover except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/nkauthorize/") return HttpResponseRedirect("/rowers/me/nkauthorize/")
if request.method == 'POST': # pragma: no cover
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) res = nkstuff.get_nk_workout_list(request.user,before=before,after=after)
if (res.status_code != 200): # pragma: no cover 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, 'workouts':workouts,
'rower':r, 'rower':r,
'dateform':dateform,
'startdate':startdate,
'enddate':enddate,
'active':'nav-workouts', 'active':'nav-workouts',
'breadcrumbs':breadcrumbs, 'breadcrumbs':breadcrumbs,
'teams':get_my_teams(request.user) 'teams':get_my_teams(request.user)