diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 9dbfd80a..cae865fe 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -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) diff --git a/rowers/templates/rower_simplepreferences.html b/rowers/templates/rower_simplepreferences.html index 7aa851fd..9accb6d9 100644 --- a/rowers/templates/rower_simplepreferences.html +++ b/rowers/templates/rower_simplepreferences.html @@ -40,41 +40,58 @@
| ID | Zone Name | Lower Boundary (Watt) | Lower Boundary (Watt) | +ID | +Zone Name | +Lower Boundary (Watt) | +Lower Boundary (Watt) | +Target SPM | +Target SPM |
|---|---|---|---|---|---|---|---|---|---|
| Indoor | OTW | +Indoor | OTW | Indoor | OTW | ||||
| 1 | {{ user.rower.powerzones.0 }} | + | + | ||||||
| 2 | {{ user.rower.powerzones.1 }} | {{ user.rower.pw_ut2 }} | {{ user.rower.pw_ut2|otwslack:user }} | +{{ user.rower.pw_ut2|target_spm_erg:user }} | +{{ user.rower.pw_ut2|target_spm_otw:user }} | ||||
| 3 | {{ user.rower.powerzones.2 }} | {{ user.rower.pw_ut1 }} | {{ user.rower.pw_ut1|otwslack:user }} | +{{ user.rower.pw_ut1|target_spm_erg:user }} | +{{ user.rower.pw_ut1|target_spm_otw:user }} | ||||
| 4 | {{ user.rower.powerzones.3 }} | {{ user.rower.pw_at }} | {{ user.rower.pw_at|otwslack:user }} | +{{ user.rower.pw_at|target_spm_erg:user }} | +{{ user.rower.pw_at|target_spm_otw:user }} | ||||
| 5 | {{ user.rower.powerzones.4 }} | {{ user.rower.pw_tr }} | {{ user.rower.pw_tr|otwslack:user }} | +{{ user.rower.pw_tr|target_spm_erg:user }} | +{{ user.rower.pw_tr|target_spm_otw:user }} | ||||
| 6 | {{ user.rower.powerzones.5 }} | {{ user.rower.pw_an }} | {{ user.rower.pw_an|otwslack:user }} | +{{ user.rower.pw_an|target_spm_erg:user }} | +{{ user.rower.pw_an|target_spm_otw:user }} |