saving intermediate state
This commit is contained in:
@@ -1164,3 +1164,53 @@ def request_is_ajax(request):
|
|||||||
# is_ajax = True
|
# is_ajax = True
|
||||||
|
|
||||||
return is_ajax
|
return is_ajax
|
||||||
|
|
||||||
|
def intervals_to_string(vals, units, typ):
|
||||||
|
if vals is None or units is None or typ is None:
|
||||||
|
return ''
|
||||||
|
if len(vals) != len(units) or len(vals) != len(typ):
|
||||||
|
return ''
|
||||||
|
|
||||||
|
s = ''
|
||||||
|
previous = 'rest'
|
||||||
|
for i in range(len(vals)):
|
||||||
|
if typ[i] == 'rest' and previous == 'rest':
|
||||||
|
if units[i] == 'min':
|
||||||
|
val = int(vals[i])*60
|
||||||
|
unit = 'sec'
|
||||||
|
else:
|
||||||
|
val = int(vals[i])
|
||||||
|
if units[i] == 'meters':
|
||||||
|
unit = 'm'
|
||||||
|
if units[i] == 'seconds':
|
||||||
|
unit = 'sec'
|
||||||
|
s += '+0min/{val}{unit}'.format(val=val,unit=unit)
|
||||||
|
elif typ[i] == 'rest':
|
||||||
|
if units[i] == 'min':
|
||||||
|
val = int(vals[i])*60
|
||||||
|
unit = 'sec'
|
||||||
|
else:
|
||||||
|
val = int(vals[i])
|
||||||
|
if units[i] == 'meters':
|
||||||
|
unit = 'm'
|
||||||
|
if units[i] == 'seconds':
|
||||||
|
unit = 'sec'
|
||||||
|
s += '/{val}{unit}'.format(val=val,unit=unit)
|
||||||
|
previous = 'rest'
|
||||||
|
else: # work interval
|
||||||
|
if units[i] == 'min':
|
||||||
|
val = int(vals[i])*60
|
||||||
|
unit = 'sec'
|
||||||
|
else:
|
||||||
|
val = int(vals[i])
|
||||||
|
if units[i] == 'meters':
|
||||||
|
unit = 'm'
|
||||||
|
if units[i] == 'seconds':
|
||||||
|
unit = 'sec'
|
||||||
|
s += '+{val}{unit}'.format(val=val,unit=unit)
|
||||||
|
previous = 'work'
|
||||||
|
|
||||||
|
if s[0] == '+':
|
||||||
|
s = s[1:]
|
||||||
|
|
||||||
|
return s
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import numpy
|
|||||||
from rowers.mailprocessing import send_confirm
|
from rowers.mailprocessing import send_confirm
|
||||||
import rowers.uploads as uploads
|
import rowers.uploads as uploads
|
||||||
import rowers.utils as utils
|
import rowers.utils as utils
|
||||||
|
from rowers.utils import intervals_to_string
|
||||||
|
|
||||||
from urllib.parse import urlparse, parse_qs
|
from urllib.parse import urlparse, parse_qs
|
||||||
from json.decoder import JSONDecodeError
|
from json.decoder import JSONDecodeError
|
||||||
@@ -2297,7 +2298,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
|
|||||||
intervaldata['itime'] = itime
|
intervaldata['itime'] = itime
|
||||||
intervaldata['itype'] = itype
|
intervaldata['itype'] = itype
|
||||||
|
|
||||||
rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
vals, units, typ = rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow = [startsecond,endsecond])
|
activewindow = [startsecond,endsecond])
|
||||||
summary = rowdata.allstats()
|
summary = rowdata.allstats()
|
||||||
@@ -2316,7 +2317,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
|
|||||||
intervaldata['itime'] = itime
|
intervaldata['itime'] = itime
|
||||||
intervaldata['itype'] = itype
|
intervaldata['itype'] = itype
|
||||||
|
|
||||||
rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
vals, units, typ = rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow = [startsecond,endsecond])
|
activewindow = [startsecond,endsecond])
|
||||||
summary = rowdata.allstats()
|
summary = rowdata.allstats()
|
||||||
@@ -2336,7 +2337,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
|
|||||||
intervaldata['itime'] = itime
|
intervaldata['itime'] = itime
|
||||||
intervaldata['itype'] = itype
|
intervaldata['itype'] = itype
|
||||||
|
|
||||||
rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
vals, units, typ = rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow = [startsecond,endsecond])
|
activewindow = [startsecond,endsecond])
|
||||||
summary = rowdata.allstats()
|
summary = rowdata.allstats()
|
||||||
@@ -6240,7 +6241,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
|
|
||||||
if powerorpace == 'power' and power is not None:
|
if powerorpace == 'power' and power is not None:
|
||||||
try:
|
try:
|
||||||
rowdata.updateinterval_metric(
|
vals, units, typ = rowdata.updateinterval_metric(
|
||||||
' Power (watts)',power,mode='larger',
|
' Power (watts)',power,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],
|
activewindow=[activesecondsmin,activesecondsmax],
|
||||||
@@ -6250,7 +6251,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
elif powerorpace == 'pace': # pragma: no cover
|
elif powerorpace == 'pace': # pragma: no cover
|
||||||
try:
|
try:
|
||||||
velo = 500./pace_secs
|
velo = 500./pace_secs
|
||||||
rowdata.updateinterval_metric(
|
vals, units, typ = rowdata.updateinterval_metric(
|
||||||
' AverageBoatSpeed (m/s)',velo,mode='larger',
|
' AverageBoatSpeed (m/s)',velo,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],
|
activewindow=[activesecondsmin,activesecondsmax],
|
||||||
@@ -6259,7 +6260,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.error(request,'Error updating pace')
|
messages.error(request,'Error updating pace')
|
||||||
elif powerorpace == 'work': # pragma: no cover
|
elif powerorpace == 'work': # pragma: no cover
|
||||||
try:
|
try:
|
||||||
rowdata.updateinterval_metric(
|
vals, units, typ = rowdata.updateinterval_metric(
|
||||||
'driveenergy',work,mode='larger',
|
'driveenergy',work,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],
|
activewindow=[activesecondsmin,activesecondsmax],
|
||||||
@@ -6268,13 +6269,17 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.error(request,'Error updating Work per Stroke')
|
messages.error(request,'Error updating Work per Stroke')
|
||||||
elif powerorpace == 'spm': # pragma: no cover
|
elif powerorpace == 'spm': # pragma: no cover
|
||||||
try:
|
try:
|
||||||
rowdata.updateinterval_metric(
|
vals, units, typ = rowdata.updateinterval_metric(
|
||||||
' Cadence (stokes/min)',spm,mode='larger',
|
' Cadence (stokes/min)',spm,mode='larger',
|
||||||
debug=False,smoothwindow=2.,
|
debug=False,smoothwindow=2.,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],)
|
activewindow=[activesecondsmin,activesecondsmax],)
|
||||||
except:
|
except:
|
||||||
messages.error(request,'Error updating SPM')
|
messages.error(request,'Error updating SPM')
|
||||||
|
|
||||||
|
intervalString = ''
|
||||||
|
if vals is not None:
|
||||||
|
intervalString = intervals_to_string(vals, units, typ)
|
||||||
|
|
||||||
intervalstats = rowdata.allstats()
|
intervalstats = rowdata.allstats()
|
||||||
itime,idist,itype = rowdata.intervalstats_values()
|
itime,idist,itype = rowdata.intervalstats_values()
|
||||||
nrintervals = len(idist)
|
nrintervals = len(idist)
|
||||||
@@ -6296,7 +6301,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
'activeminutesmin': activeminutesmin,
|
'activeminutesmin': activeminutesmin,
|
||||||
'activeminutesmax': activeminutesmax,
|
'activeminutesmax': activeminutesmax,
|
||||||
}
|
}
|
||||||
form = SummaryStringForm()
|
form = SummaryStringForm(initial={'intervalstring':intervalString})
|
||||||
powerupdateform = PowerIntervalUpdateForm(initial=data)
|
powerupdateform = PowerIntervalUpdateForm(initial=data)
|
||||||
savebutton = 'savepowerpaceform'
|
savebutton = 'savepowerpaceform'
|
||||||
formvalues = {
|
formvalues = {
|
||||||
@@ -6368,7 +6373,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
pace_secs = 120.
|
pace_secs = 120.
|
||||||
|
|
||||||
if powerorpace == 'power' and power is not None:
|
if powerorpace == 'power' and power is not None:
|
||||||
rowdata.updateinterval_metric(' Power (watts)',power,mode='larger',
|
vals, units, typ = rowdata.updateinterval_metric(' Power (watts)',power,mode='larger',
|
||||||
debug=False,smoothwindow=15,
|
debug=False,smoothwindow=15,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],
|
activewindow=[activesecondsmin,activesecondsmax],
|
||||||
)
|
)
|
||||||
@@ -6376,7 +6381,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
elif powerorpace == 'pace': # pragma: no cover
|
elif powerorpace == 'pace': # pragma: no cover
|
||||||
try:
|
try:
|
||||||
velo = 500./pace_secs
|
velo = 500./pace_secs
|
||||||
rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',velo,mode='larger',
|
vals, units, typ = rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',velo,mode='larger',
|
||||||
debug=False,smoothwindow=15,
|
debug=False,smoothwindow=15,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],
|
activewindow=[activesecondsmin,activesecondsmax],
|
||||||
)
|
)
|
||||||
@@ -6384,7 +6389,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.error(request,'Error updating pace')
|
messages.error(request,'Error updating pace')
|
||||||
elif powerorpace == 'work': # pragma: no cover
|
elif powerorpace == 'work': # pragma: no cover
|
||||||
try:
|
try:
|
||||||
rowdata.updateinterval_metric(
|
vals, units, typ = rowdata.updateinterval_metric(
|
||||||
'driveenergy',work,mode='larger',
|
'driveenergy',work,mode='larger',
|
||||||
debug=False,smoothwindow=15.,
|
debug=False,smoothwindow=15.,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],)
|
activewindow=[activesecondsmin,activesecondsmax],)
|
||||||
@@ -6392,7 +6397,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.error(request,'Error updating Work per Stroke')
|
messages.error(request,'Error updating Work per Stroke')
|
||||||
elif powerorpace == 'spm': # pragma: no cover
|
elif powerorpace == 'spm': # pragma: no cover
|
||||||
try:
|
try:
|
||||||
rowdata.updateinterval_metric(' Cadence (stokes/min)',spm,mode='larger',
|
vals, units, typ = rowdata.updateinterval_metric(' Cadence (stokes/min)',spm,mode='larger',
|
||||||
debug=False,smoothwindow=2.,
|
debug=False,smoothwindow=2.,
|
||||||
activewindow=[activesecondsmin,activesecondsmax],
|
activewindow=[activesecondsmin,activesecondsmax],
|
||||||
)
|
)
|
||||||
@@ -6400,6 +6405,11 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.error(request,'Error updating SPM')
|
messages.error(request,'Error updating SPM')
|
||||||
|
|
||||||
|
|
||||||
|
intervalString = ''
|
||||||
|
if vals is not None:
|
||||||
|
intervalString = intervals_to_string(vals, units, typ)
|
||||||
|
|
||||||
|
|
||||||
intervalstats = rowdata.allstats()
|
intervalstats = rowdata.allstats()
|
||||||
itime,idist,itype = rowdata.intervalstats_values()
|
itime,idist,itype = rowdata.intervalstats_values()
|
||||||
nrintervals = len(idist)
|
nrintervals = len(idist)
|
||||||
@@ -6414,11 +6424,10 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
'activeminutesmax': activeminutesmax,
|
'activeminutesmax': activeminutesmax,
|
||||||
}
|
}
|
||||||
powerupdateform = PowerIntervalUpdateForm(initial=cd)
|
powerupdateform = PowerIntervalUpdateForm(initial=cd)
|
||||||
form = SummaryStringForm()
|
form = SummaryStringForm(initial={'intervalstring':intervalString})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
form = SummaryStringForm()
|
|
||||||
|
|
||||||
# we are saving the results obtained from the detailed form
|
# we are saving the results obtained from the detailed form
|
||||||
elif request.method == 'POST' and "savedetailform" in request.POST: # pragma: no cover
|
elif request.method == 'POST' and "savedetailform" in request.POST: # pragma: no cover
|
||||||
savebutton = 'savedetailform'
|
savebutton = 'savedetailform'
|
||||||
@@ -6562,7 +6571,6 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
div = ''
|
div = ''
|
||||||
|
|
||||||
# render page
|
# render page
|
||||||
|
|
||||||
return render(request, 'summary_edit.html',
|
return render(request, 'summary_edit.html',
|
||||||
{'form':form,
|
{'form':form,
|
||||||
'activeminutesmax':activeminutesmax,
|
'activeminutesmax':activeminutesmax,
|
||||||
|
|||||||
Reference in New Issue
Block a user