ignore duplicates for rolling wps
This commit is contained in:
@@ -1453,9 +1453,10 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
_ = update_wps(r, mytypes.otetypes)
|
||||
|
||||
# set user running wps
|
||||
if workouttype in otetypes:
|
||||
if not duplicate and workouttype in otetypes:
|
||||
cntr = Workout.objects.filter(user=r, workouttype__in=otetypes,
|
||||
startdatetime__gt=tz.now()-tz.timedelta(days=42)).count()
|
||||
startdatetime__gt=tz.now()-tz.timedelta(days=42),
|
||||
duplicate=False).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):
|
||||
@@ -1466,9 +1467,10 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
||||
r.running_wps_erg = 600.
|
||||
r.save()
|
||||
|
||||
if workouttype in otwtypes:
|
||||
if not duplicate and workouttype in otwtypes:
|
||||
cntr = Workout.objects.filter(user=r, workouttype__in=otwtypes,
|
||||
startdatetime__gt=tz.now()-tz.timedelta(days=42)).count()
|
||||
startdatetime__gt=tz.now()-tz.timedelta(days=42),
|
||||
duplicate=False).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
|
||||
|
||||
@@ -1226,6 +1226,10 @@ bulkactions = (
|
||||
('remove','remove'),
|
||||
('export','export'),
|
||||
('rower assign','rower assign'),
|
||||
('set commute','set commute'),
|
||||
('set private','set private'),
|
||||
('set public','set public'),
|
||||
('unset commute','unset commute'),
|
||||
)
|
||||
destinations = (
|
||||
('c2','c2'),
|
||||
|
||||
@@ -110,6 +110,9 @@
|
||||
<input type="checkbox" id="workoutid" value={{ workout.id|encode }} name="workoutid" />
|
||||
{% endif %}
|
||||
{{ workout.date|date:"Y-m-d" }} {{ workout.starttime|date:"H:i" }}
|
||||
{% if workout.privacy == 'hidden' %}
|
||||
<span style="font-size: smaller"><i class="fa-solid fa-eye-slash"></i></span>
|
||||
{% endif %}
|
||||
{% if workout.duplicate %}
|
||||
<span style="font-size: smaller"><i class="fal fa-angle-double-up"></i></span>
|
||||
{% endif %}
|
||||
|
||||
@@ -62,36 +62,36 @@
|
||||
<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>
|
||||
<td><{{ user.rower.pw_ut1|target_spm_erg:user }}</td>
|
||||
<td><{{ user.rower.pw_ut1|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>
|
||||
<td>{{ user.rower.pw_ut1|target_spm_erg:user }}-{{ user.rower.pw_at|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_ut1|target_spm_otw:user }}-{{ user.rower.pw_at|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>
|
||||
<td>{{ user.rower.pw_at|target_spm_erg:user }}-{{ user.rower.pw_tr|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_at|target_spm_otw:user }}-{{ user.rower.pw_tr|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>
|
||||
<td>{{ user.rower.pw_tr|target_spm_erg:user }}-{{ user.rower.pw_an|target_spm_erg:user }}</td>
|
||||
<td>{{ user.rower.pw_tr|target_spm_otw:user }}-{{ user.rower.pw_an|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>
|
||||
<td>>{{ user.rower.pw_an|target_spm_erg:user }}</td>
|
||||
<td>>{{ user.rower.pw_an|target_spm_otw:user }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
@@ -2067,6 +2067,22 @@ def workouts_bulk_actions(request):
|
||||
for w in workouts:
|
||||
messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id)))
|
||||
w.delete()
|
||||
elif action == 'set private':
|
||||
for w in workouts:
|
||||
w.privacy = 'private'
|
||||
w.save()
|
||||
elif action == 'set commute':
|
||||
for w in workouts:
|
||||
w.is_commute = True
|
||||
w.save()
|
||||
elif action == 'unset commute':
|
||||
for w in workouts:
|
||||
w.is_commute = False
|
||||
w.save()
|
||||
elif action == 'set public':
|
||||
for w in workouts:
|
||||
w.privacy = 'public'
|
||||
w.save()
|
||||
elif action == 'export':
|
||||
exportchoice = ExportChoices(request.POST)
|
||||
if exportchoice.is_valid():
|
||||
|
||||
Reference in New Issue
Block a user