new feature first code
This commit is contained in:
@@ -1274,7 +1274,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
pass
|
||||
|
||||
# recalculate power data
|
||||
if workouttype == 'rower' or workouttype == 'dynamic' or workouttype == 'slides':
|
||||
if workouttype in otetypes:
|
||||
try:
|
||||
if r.erg_recalculatepower:
|
||||
row.erg_recalculatepower()
|
||||
@@ -1282,6 +1282,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
averagehr = row.df[' HRCur (bpm)'].mean()
|
||||
maxhr = row.df[' HRCur (bpm)'].max()
|
||||
|
||||
@@ -1451,6 +1452,33 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
_ = update_wps(r, mytypes.otwtypes)
|
||||
_ = update_wps(r, mytypes.otetypes)
|
||||
|
||||
# set user running wps
|
||||
if workouttype in otetypes:
|
||||
cntr = Workout.objects.filter(user=r, workouttype__in=otetypes,
|
||||
startdatetime__gt=tz.now()-tz.timedelta(days=42)).count()
|
||||
new_value = (cntr*r.running_wps_erg + row.df['driveenergy'].mean())/(cntr+1.0)
|
||||
# if new_value is not zero or infinite or -inf, r.running_wps can be set to value
|
||||
if not (math.isnan(new_value) or math.isinf(new_value) or new_value == 0):
|
||||
r.running_wps_erg = new_value
|
||||
elif not (math.isnan(r.running_wps_erg) or math.isinf(r.running_wps_erg) or r.running_wps_erg == 0):
|
||||
pass
|
||||
else:
|
||||
r.running_wps_erg = 600.
|
||||
r.save()
|
||||
|
||||
if workouttype in otwtypes:
|
||||
cntr = Workout.objects.filter(user=r, workouttype__in=otwtypes,
|
||||
startdatetime__gt=tz.now()-tz.timedelta(days=42)).count()
|
||||
new_value = (cntr*r.running_wps_erg + row.df['driveenergy'].mean())/(cntr+1.0)
|
||||
if not (math.isnan(new_value) or math.isinf(new_value) or new_value == 0):
|
||||
r.running_wps = new_value
|
||||
elif not (math.isnan(r.running_wps) or math.isinf(r.running_wps) or r.running_wps == 0):
|
||||
pass
|
||||
else:
|
||||
r.running_wps = 400.
|
||||
r.save()
|
||||
|
||||
|
||||
_ = myqueue(queuehigh, handle_calctrimp, w.id, f2,
|
||||
r.ftp, r.sex, r.hrftp, r.max, r.rest)
|
||||
|
||||
|
||||
@@ -40,41 +40,58 @@
|
||||
<table class="listtable shortpadded" width=100%>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID </th><th>Zone Name</th><th>Lower Boundary (Watt) </th><th>Lower Boundary (Watt)</th>
|
||||
<th>ID </th>
|
||||
<th>Zone Name</th>
|
||||
<th>Lower Boundary (Watt) </th>
|
||||
<th>Lower Boundary (Watt)</th>
|
||||
<th>Target SPM</th>
|
||||
<th>Target SPM</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th><th></th><th>Indoor</th><th>OTW</th>
|
||||
<th></th><th></th><th>Indoor</th><th>OTW</th><th>Indoor</th><th>OTW</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td><td>{{ user.rower.powerzones.0 }}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td><td>{{ user.rower.powerzones.1 }}</td>
|
||||
<td>{{ user.rower.pw_ut2 }}</td>
|
||||
<td>{{ user.rower.pw_ut2|otwslack:user }}</td>
|
||||
<td>{{ user.rower.pw_ut2|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_ut2|target_spm_otw:user }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td><td>{{ user.rower.powerzones.2 }}</td>
|
||||
<td>{{ user.rower.pw_ut1 }}</td>
|
||||
<td>{{ user.rower.pw_ut1|otwslack:user }}</td>
|
||||
<td>{{ user.rower.pw_ut1|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_ut1|target_spm_otw:user }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td><td>{{ user.rower.powerzones.3 }}</td>
|
||||
<td>{{ user.rower.pw_at }}</td>
|
||||
<td>{{ user.rower.pw_at|otwslack:user }}</td>
|
||||
<td>{{ user.rower.pw_at|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_at|target_spm_otw:user }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>5</td><td>{{ user.rower.powerzones.4 }}</td>
|
||||
<td>{{ user.rower.pw_tr }}</td>
|
||||
<td>{{ user.rower.pw_tr|otwslack:user }}</td>
|
||||
<td>{{ user.rower.pw_tr|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_tr|target_spm_otw:user }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>6</td><td>{{ user.rower.powerzones.5 }}</td>
|
||||
<td>{{ user.rower.pw_an }}</td>
|
||||
<td>{{ user.rower.pw_an|otwslack:user }}</td>
|
||||
<td>{{ user.rower.pw_an|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_an|target_spm_otw:user }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1065,3 +1065,15 @@ def previousworkout(workout, user):
|
||||
def otwslack(value, user):
|
||||
r = Rower.objects.get(user=user)
|
||||
return int(value*(100.-r.otwslack)/100.)
|
||||
|
||||
@register.filter
|
||||
def target_spm_erg(value, user):
|
||||
r = Rower.objects.get(user=user)
|
||||
value = 1.0*value
|
||||
return int(value*60/r.running_wps_erg)
|
||||
|
||||
@register.filter
|
||||
def target_spm_otw(value, user):
|
||||
r = Rower.objects.get(user=user)
|
||||
value = value*(100.-r.otwslack)/100.
|
||||
return int(value*60/r.running_wps)
|
||||
|
||||
Reference in New Issue
Block a user