Private
Public Access
1
0

Merge branch 'release/flexpowerzonesbugfix'

This commit is contained in:
Sander Roosendaal
2017-01-25 22:01:00 +01:00
4 changed files with 112 additions and 16 deletions

View File

@@ -4,6 +4,7 @@ import time
import gc
import gzip
import shutil
import numpy as np
import rowingdata
from rowingdata import main as rmain
@@ -17,6 +18,8 @@ from matplotlib import figure
import stravalib
from utils import serialize_list,deserialize_list
from rowers.dataprepnodjango import update_strokedata
from django.core.mail import send_mail, BadHeaderError,EmailMessage
@@ -171,17 +174,22 @@ def handle_otwsetpower(f1,boattype,weightvalue,
# This function generates all the static (PNG image) plots
@app.task
def handle_makeplot(f1,f2,t,hrdata,plotnr,imagename):
hrmax = hrdata['hrmax']
hrut2 = hrdata['hrut2']
hrut1 = hrdata['hrut1']
hrat = hrdata['hrat']
hrtr = hrdata['hrtr']
hran = hrdata['hran']
ftp = hrdata['ftp']
powerzones = deserialize_list(hrdata['powerzones'])
powerperc = np.array(deserialize_list(hrdata['powerperc'])).astype(int)
rr = rowingdata.rower(hrmax=hrmax,hrut2=hrut2,
hrut1=hrut1,hrat=hrat,
hrtr=hrtr,hran=hran)
hrtr=hrtr,hran=hran,
ftp=ftp,powerperc=powerperc,
powerzones=powerzones)
try:
row = rdata(f2,rower=rr)
except IOError:

View File

@@ -13,6 +13,7 @@ from django.core.files.uploadedfile import SimpleUploadedFile
from time import strftime,strptime,mktime,time,daylight
import os
from rowers.tasks import handle_makeplot
from rowers.utils import serialize_list,deserialize_list
from rowers.c2stuff import C2NoTokenError
from minimocktest import MockTestCase
@@ -1062,9 +1063,15 @@ class PlotTests(TestCase):
duration="0:55:00",distance=8000,
csvfilename=filename)
# timestr = strftime("%Y%m%d-%H%M%S")
# imagename = f1+timestr+'.png'
# fullpathimagename = 'static/plots/'+imagename
# timestr = strftime("%Y%m%d-%H%M%S")
# imagename = f1+timestr+'.png'
# fullpathimagename = 'static/plots/'+imagename
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
self.hrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -1073,7 +1080,9 @@ class PlotTests(TestCase):
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
}
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
def test_ote_plots(self):

View File

@@ -1,4 +1,14 @@
import math
import numpy as np
def serialize_list(value,token=','):
assert(isinstance(value, list) or isinstance(value, tuple) or isinstance(value,np.ndarray))
return token.join([unicode(s) for s in value])
def deserialize_list(value,token=','):
if isinstance(value, list):
return value
return value.split(token)
def geo_distance(lat1,lon1,lat2,lon2):
""" Approximate distance and bearing between two points

View File

@@ -192,7 +192,7 @@ def splitstdata(lijst):
return [np.array(t),np.array(latlong)]
from utils import geo_distance
from utils import geo_distance,serialize_list,deserialize_list
# Check if a user is a Pro member
def promember(user):
@@ -3135,6 +3135,12 @@ def workout_add_otw_powerplot_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3143,6 +3149,8 @@ def workout_add_otw_powerplot_view(request,id):
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':powerperc,
'powerzones':r.powerzones,
}
# make plot - asynchronous task
@@ -3180,6 +3188,13 @@ def workout_add_piechart_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3188,6 +3203,8 @@ def workout_add_piechart_view(request,id):
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':powerperc,
'powerzones':r.powerzones,
}
# make plot - asynchronous task
@@ -3225,6 +3242,13 @@ def workout_add_power_piechart_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3233,6 +3257,8 @@ def workout_add_power_piechart_view(request,id):
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
# make plot - asynchronous task
@@ -3268,6 +3294,12 @@ def workout_add_timeplot_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3276,6 +3308,8 @@ def workout_add_timeplot_view(request,id):
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
# make plot - asynchronous task
@@ -3313,6 +3347,12 @@ def workout_add_distanceplot_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3321,6 +3361,8 @@ def workout_add_distanceplot_view(request,id):
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
# make plot - asynchronous task
@@ -3356,6 +3398,12 @@ def workout_add_distanceplot2_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3363,6 +3411,9 @@ def workout_add_distanceplot2_view(request,id):
'hrat':r.at,
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
# make plot - asynchronous task
@@ -3400,6 +3451,12 @@ def workout_add_timeplot2_view(request,id):
fullpathimagename = 'static/plots/'+imagename
u = request.user
r = Rower.objects.get(user=u)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
@@ -3407,6 +3464,9 @@ def workout_add_timeplot2_view(request,id):
'hrat':r.at,
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
# make plot - asynchronous task
@@ -3856,7 +3916,6 @@ def workout_upload_view(request,message=""):
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
print powerperc
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp,
@@ -3956,14 +4015,24 @@ def workout_upload_view(request,message=""):
imagename = f1[:-4]+'.png'
fullpathimagename = 'static/plots/'+imagename
u = request.user
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
'hrut1':r.ut1,
'hrat':r.at,
'hrtr':r.tr,
'hran':r.an,
}
r = Rower.objects.get(user=request.user)
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
hrpwrdata = {
'hrmax':r.max,
'hrut2':r.ut2,
'hrut1':r.ut1,
'hrat':r.at,
'hrtr':r.tr,
'hran':r.an,
'ftp':r.ftp,
'powerperc':serialize_list(powerperc),
'powerzones':serialize_list(r.powerzones),
}
# make plot - asynchronous task
plotnrs = {