Merge branch 'release/v16.7.10'
This commit is contained in:
@@ -3194,7 +3194,7 @@ def df_from_summary(data):
|
|||||||
spms = [0]
|
spms = [0]
|
||||||
try:
|
try:
|
||||||
hrs = [splits[0]['heart_rate']['average']]
|
hrs = [splits[0]['heart_rate']['average']]
|
||||||
except (KeyError, TypeError): # pragma: no cover
|
except (KeyError, TypeError, IndexError): # pragma: no cover
|
||||||
hrs = [0]
|
hrs = [0]
|
||||||
|
|
||||||
for split in splits:
|
for split in splits:
|
||||||
@@ -3317,8 +3317,11 @@ def handle_c2_async_workout(alldata,userid,c2token,c2id,delaysec,defaulttimezone
|
|||||||
df = df_from_summary(data)
|
df = df_from_summary(data)
|
||||||
else:
|
else:
|
||||||
#dologging('debuglog.log',json.dumps(s.json()))
|
#dologging('debuglog.log',json.dumps(s.json()))
|
||||||
|
try:
|
||||||
strokedata = pd.DataFrame.from_dict(s.json()['data'])
|
strokedata = pd.DataFrame.from_dict(s.json()['data'])
|
||||||
|
except AttributeError:
|
||||||
|
dologging('debuglog.log','No stroke data in stroke data')
|
||||||
|
return 0
|
||||||
|
|
||||||
try:
|
try:
|
||||||
res = make_cumvalues(0.1*strokedata['t'])
|
res = make_cumvalues(0.1*strokedata['t'])
|
||||||
|
|||||||
@@ -29,6 +29,10 @@
|
|||||||
|
|
||||||
{% if workouts %}
|
{% if workouts %}
|
||||||
<li class="grid_4">
|
<li class="grid_4">
|
||||||
|
<form enctype="multipart/form-data" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input name='workouts' type="submit" value="Import selected workouts">
|
||||||
|
<a href="/rowers/workout/nkimport/?selectallnew=true">Select All New</a>
|
||||||
<table width="70%" class="listtable">
|
<table width="70%" class="listtable">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -44,7 +48,12 @@
|
|||||||
{% for workout in workouts %}
|
{% for workout in workouts %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href="/rowers/workout/nkimport/{{ workout|lookup:'id' }}/async/">Import</a></td>
|
{% if workout|lookup:'new' == 'NEW' and checknew == 'true' %}
|
||||||
|
<input checked type="checkbox" value={{ workout|lookup:'id' }} name="workoutid">
|
||||||
|
{% else %}
|
||||||
|
<input type="checkbox" value={{ workout|lookup:'id' }} name="workoutid">
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
<td>{{ workout|lookuplong:'name' }}</td>
|
<td>{{ workout|lookuplong:'name' }}</td>
|
||||||
<td class="block" style="width:auto">{{ workout|lookuplong:'starttime' }}</td>
|
<td class="block" style="width:auto">{{ workout|lookuplong:'starttime' }}</td>
|
||||||
<td>{{ workout|lookup:'duration' }} </td>
|
<td>{{ workout|lookup:'duration' }} </td>
|
||||||
@@ -55,6 +64,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</form>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="grid_4">
|
<li class="grid_4">
|
||||||
|
|||||||
@@ -637,6 +637,35 @@ def workout_nkimport_view(request,userid=0,after=0,before=0):
|
|||||||
|
|
||||||
workouts = workouts[::-1]
|
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 = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
'url':'/rowers/list-workouts/',
|
'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',
|
return render(request,'nk_list_import.html',
|
||||||
{
|
{
|
||||||
'workouts':workouts,
|
'workouts':workouts,
|
||||||
@@ -657,7 +688,8 @@ def workout_nkimport_view(request,userid=0,after=0,before=0):
|
|||||||
'enddate':enddate,
|
'enddate':enddate,
|
||||||
'active':'nav-workouts',
|
'active':'nav-workouts',
|
||||||
'breadcrumbs':breadcrumbs,
|
'breadcrumbs':breadcrumbs,
|
||||||
'teams':get_my_teams(request.user)
|
'teams':get_my_teams(request.user),
|
||||||
|
'checknew':checknew,
|
||||||
})
|
})
|
||||||
|
|
||||||
# Process Strava Callback
|
# Process Strava Callback
|
||||||
|
|||||||
@@ -222,6 +222,7 @@ from rowers.tasks import (
|
|||||||
handle_sendemail_ical,
|
handle_sendemail_ical,
|
||||||
handle_c2_async_workout,
|
handle_c2_async_workout,
|
||||||
handle_send_email_instantplan_notification,
|
handle_send_email_instantplan_notification,
|
||||||
|
handle_nk_async_workout,
|
||||||
)
|
)
|
||||||
|
|
||||||
from scipy.signal import savgol_filter
|
from scipy.signal import savgol_filter
|
||||||
|
|||||||
Reference in New Issue
Block a user