Private
Public Access
1
0

initial implementation of Power Zones form

This commit is contained in:
Sander Roosendaal
2017-01-25 18:07:57 +01:00
parent 5eed5d05a8
commit 591e515f92
4 changed files with 255 additions and 106 deletions

View File

@@ -440,9 +440,17 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
# make workout
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp)
hrtr=r.tr,hran=r.an,ftp=r.ftp,
powerperc=powerperc,
powerzones=r.powerzones,
)
row = rdata(csvfilename,rower=rr)
averagehr = row.df[' HRCur (bpm)'].mean()
@@ -679,9 +687,15 @@ def add_workout_from_stdata(user,importid,data):
compression='gzip')
# make workout
powerperc = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp)
hrtr=r.tr,hran=r.an,ftp=r.ftp,
powerperc=powerperc,powerzones=powerzones)
row = rdata(csvfilename,rower=rr)
averagehr = row.df[' HRCur (bpm)'].mean()
@@ -3837,9 +3851,15 @@ def workout_upload_view(request,message=""):
# make Workout object and put in database
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
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp)
hrtr=r.tr,hran=r.an,ftp=r.ftp,
powerperc=powerperc,powerzones=powerzones)
row = rdata(f2,rower=rr)
if row == 0:
return HttpResponse("Error: CSV Data File Not Found")
@@ -4176,9 +4196,15 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
f1 = row.csvfilename
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
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp)
hrtr=r.tr,hran=r.an,ftp=r.ftp,
powerperc=powerperc,powerzones=powerzones)
rowdata = rdata(f1,rower=rr)
if rowdata == 0:
return HttpResponse("Error: CSV Data File Not Found")
@@ -4225,9 +4251,15 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
f1 = row.csvfilename
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
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp)
hrtr=r.tr,hran=r.an,ftp=r.ftp,
powerperc=powerperc,powerzones=powerzones)
rowdata = rdata(f1,rower=rr)
if rowdata == 0:
return HttpResponse("Error: CSV Data File Not Found")
@@ -4465,6 +4497,7 @@ def rower_favoritecharts_view(request):
# Add email address to form so user can change his email address
@login_required()
def rower_edit_view(request,message=""):
r = Rower.objects.get(user=request.user)
if request.method == 'POST' and "ut2" in request.POST:
form = RowerForm(request.POST)
if form.is_valid():
@@ -4489,17 +4522,30 @@ def rower_edit_view(request,message=""):
r.rest = max(min(rest,250),10)
r.weightcategory = weightcategory
r.save()
message = "User data changed"
url = reverse(workouts_view,args=[str(message)])
response = HttpResponseRedirect(url)
successmessage = "Your Heart Rate data were changed"
form = RowerForm(instance=r)
powerform = RowerPowerForm(instance=r)
powerzonesform = RowerPowerZonesForm(instance=r)
return render(request, 'rower_form.html',
{'form':form,
'powerzonesform':powerzonesform,
'powerform':powerform,
'rower':r,
'successmessage':successmessage,
})
except Rower.DoesNotExist:
message = "Funny. This user doesn't exist."
url = reverse(workouts_view,args=[str(message)])
response = HttpResponseRedirect(url)
else:
message = HttpResponse("invalid form")
#form = RowerForm(instance=r)
powerform = RowerPowerForm(instance=r)
powerzonesform = RowerPowerZonesForm(instance=r)
return render(request, 'rower_form.html',
{'form':form,
'powerzonesform':powerzonesform,
'powerform':powerform,
'rower':r,
})
# url = reverse(rower_edit_view,args=[str(message)])
@@ -4508,15 +4554,18 @@ def rower_edit_view(request,message=""):
return response
elif request.method == 'POST' and "ftp" in request.POST:
form = RowerPowerForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
powerform = RowerPowerForm(request.POST)
if powerform.is_valid():
cd = powerform.cleaned_data
ftp = cd['ftp']
try:
r = Rower.objects.get(user=request.user)
powerfrac = 100*np.array([r.pw_ut2,
r.pw_ut1,
r.pw_at,
r.pw_tr,r.pw_an])/r.ftp
r.ftp = max(min(ftp,650),50)
powerperc = [55,75,90,105,120]
ut2,ut1,at,tr,an = (r.ftp*np.array(powerperc)/100.).astype(int)
ut2,ut1,at,tr,an = (r.ftp*powerfrac/100.).astype(int)
r.pw_ut2 = ut2
r.pw_ut1 = ut1
r.pw_at = at
@@ -4528,10 +4577,13 @@ def rower_edit_view(request,message=""):
response = HttpResponseRedirect(url)
except Rower.DoesNotExist:
message = "Funny. This user doesn't exist."
url = reverse(workouts_view,args=[str(message)])
url = reverse(rower_edit_view,args=[str(message)])
response = HttpResponseRedirect(url)
else:
message = HttpResponse("invalid form")
form = RowerForm(instance=r)
#powerform = RowerPowerForm(instance=r)
powerzonesform = RowerPowerZonesForm(instance=r)
return render(request, 'rower_form.html',
{'form':form,
'powerform':powerform,
@@ -4540,20 +4592,62 @@ def rower_edit_view(request,message=""):
return response
elif request.method == 'POST' and "ut3name" in request.POST:
powerzonesform = RowerPowerZonesForm(request.POST)
if powerzonesform.is_valid():
cd = powerzonesform.cleaned_data
pw_ut2 = cd['pw_ut2']
pw_ut1 = cd['pw_ut1']
pw_at = cd['pw_at']
pw_tr = cd['pw_tr']
pw_an = cd['pw_an']
ut3name = cd['ut3name']
ut2name = cd['ut2name']
ut1name = cd['ut1name']
atname = cd['atname']
trname = cd['trname']
anname = cd['anname']
powerzones = [ut3name,ut2name,ut1name,atname,trname,anname]
try:
r = Rower.objects.get(user=request.user)
r.pw_ut2 = pw_ut2
r.pw_ut1 = pw_ut1
r.pw_at = pw_at
r.pw_tr = pw_tr
r.pw_an = pw_an
r.powerzones = powerzones
r.save()
successmessage = "Your Power Zone data were changed"
form = RowerForm(instance=r)
powerform = RowerPowerForm(instance=r)
powerzonesform = RowerPowerZonesForm(instance=r)
return render(request, 'rower_form.html',
{'form':form,
'powerzonesform':powerzonesform,
'powerform':powerform,
'rower':r,
'successmessage':successmessage,
})
except Rower.DoesNotExist:
message = "Funny. This user doesn't exist."
url = reverse(workouts_view,args=[str(message)])
response = HttpResponseRedirect(url)
return response
else:
form = RowerForm(instance=r)
powerform = RowerPowerForm(instance=r)
#powerzonesform = RowerPowerZonesForm(instance=r)
message = HttpResponse("invalid form")
return render(request, 'rower_form.html',
{'form':form,
'powerform':powerform,
'powerzonesform':powerzonesform,
'rower':r,
})
else:
try:
r = Rower.objects.get(user=request.user)
# Temporary code
powerperc = [55,75,90,105,120]
ut2,ut1,at,tr,an = (r.ftp*np.array(powerperc)/100.).astype(int)
r.pw_ut2 = ut2
r.pw_ut1 = ut1
r.pw_at = at
r.pw_tr = tr
r.pw_an = an
r.save()
# end temporary
form = RowerForm(instance=r)
powerform = RowerPowerForm(instance=r)
@@ -4742,10 +4836,15 @@ def strokedatajson(request,id):
row.save()
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
rr = rrower(hrmax=r.max,hrut2=r.ut2,
hrut1=r.ut1,hrat=r.at,
hrtr=r.tr,hran=r.an,ftp=r.ftp)
hrtr=r.tr,hran=r.an,ftp=r.ftp,
powerperc=powerperc,powerzones=powerzones)
rowdata = rdata(row.csvfilename,rower=rr).df
datadf = dataprep.dataprep(rowdata,id=row.id,bands=True,barchart=True,otwpower=True,empower=True)