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)
|
_ = update_wps(r, mytypes.otetypes)
|
||||||
|
|
||||||
# set user running wps
|
# set user running wps
|
||||||
if workouttype in otetypes:
|
if not duplicate and workouttype in otetypes:
|
||||||
cntr = Workout.objects.filter(user=r, 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)
|
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 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):
|
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.running_wps_erg = 600.
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
if workouttype in otwtypes:
|
if not duplicate and workouttype in otwtypes:
|
||||||
cntr = Workout.objects.filter(user=r, 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)
|
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):
|
if not (math.isnan(new_value) or math.isinf(new_value) or new_value == 0):
|
||||||
r.running_wps = new_value
|
r.running_wps = new_value
|
||||||
|
|||||||
@@ -1226,6 +1226,10 @@ bulkactions = (
|
|||||||
('remove','remove'),
|
('remove','remove'),
|
||||||
('export','export'),
|
('export','export'),
|
||||||
('rower assign','rower assign'),
|
('rower assign','rower assign'),
|
||||||
|
('set commute','set commute'),
|
||||||
|
('set private','set private'),
|
||||||
|
('set public','set public'),
|
||||||
|
('unset commute','unset commute'),
|
||||||
)
|
)
|
||||||
destinations = (
|
destinations = (
|
||||||
('c2','c2'),
|
('c2','c2'),
|
||||||
|
|||||||
@@ -110,6 +110,9 @@
|
|||||||
<input type="checkbox" id="workoutid" value={{ workout.id|encode }} name="workoutid" />
|
<input type="checkbox" id="workoutid" value={{ workout.id|encode }} name="workoutid" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ workout.date|date:"Y-m-d" }} {{ workout.starttime|date:"H:i" }}
|
{{ 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 %}
|
{% if workout.duplicate %}
|
||||||
<span style="font-size: smaller"><i class="fal fa-angle-double-up"></i></span>
|
<span style="font-size: smaller"><i class="fal fa-angle-double-up"></i></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -62,36 +62,36 @@
|
|||||||
<td>2</td><td>{{ user.rower.powerzones.1 }}</td>
|
<td>2</td><td>{{ user.rower.powerzones.1 }}</td>
|
||||||
<td>{{ user.rower.pw_ut2 }}</td>
|
<td>{{ user.rower.pw_ut2 }}</td>
|
||||||
<td>{{ user.rower.pw_ut2|otwslack:user }}</td>
|
<td>{{ user.rower.pw_ut2|otwslack:user }}</td>
|
||||||
<td>{{ user.rower.pw_ut2|target_spm_erg:user }}</td>
|
<td><{{ user.rower.pw_ut1|target_spm_erg:user }}</td>
|
||||||
<td>{{ user.rower.pw_ut2|target_spm_otw:user }}</td>
|
<td><{{ user.rower.pw_ut1|target_spm_otw:user }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>3</td><td>{{ user.rower.powerzones.2 }}</td>
|
<td>3</td><td>{{ user.rower.powerzones.2 }}</td>
|
||||||
<td>{{ user.rower.pw_ut1 }}</td>
|
<td>{{ user.rower.pw_ut1 }}</td>
|
||||||
<td>{{ user.rower.pw_ut1|otwslack:user }}</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_erg:user }}-{{ user.rower.pw_at|target_spm_erg:user }}</td>
|
||||||
<td>{{ user.rower.pw_ut1|target_spm_otw:user }}</td>
|
<td>{{ user.rower.pw_ut1|target_spm_otw:user }}-{{ user.rower.pw_at|target_spm_otw:user }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>4</td><td>{{ user.rower.powerzones.3 }}</td>
|
<td>4</td><td>{{ user.rower.powerzones.3 }}</td>
|
||||||
<td>{{ user.rower.pw_at }}</td>
|
<td>{{ user.rower.pw_at }}</td>
|
||||||
<td>{{ user.rower.pw_at|otwslack:user }}</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_erg:user }}-{{ user.rower.pw_tr|target_spm_erg:user }}</td>
|
||||||
<td>{{ user.rower.pw_at|target_spm_otw:user }}</td>
|
<td>{{ user.rower.pw_at|target_spm_otw:user }}-{{ user.rower.pw_tr|target_spm_otw:user }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>5</td><td>{{ user.rower.powerzones.4 }}</td>
|
<td>5</td><td>{{ user.rower.powerzones.4 }}</td>
|
||||||
<td>{{ user.rower.pw_tr }}</td>
|
<td>{{ user.rower.pw_tr }}</td>
|
||||||
<td>{{ user.rower.pw_tr|otwslack:user }}</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_erg:user }}-{{ user.rower.pw_an|target_spm_erg:user }}</td>
|
||||||
<td>{{ user.rower.pw_tr|target_spm_otw:user }}</td>
|
<td>{{ user.rower.pw_tr|target_spm_otw:user }}-{{ user.rower.pw_an|target_spm_otw:user }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>6</td><td>{{ user.rower.powerzones.5 }}</td>
|
<td>6</td><td>{{ user.rower.powerzones.5 }}</td>
|
||||||
<td>{{ user.rower.pw_an }}</td>
|
<td>{{ user.rower.pw_an }}</td>
|
||||||
<td>{{ user.rower.pw_an|otwslack:user }}</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_erg:user }}</td>
|
||||||
<td>{{ user.rower.pw_an|target_spm_otw:user }}</td>
|
<td>>{{ user.rower.pw_an|target_spm_otw:user }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</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:
|
for w in workouts:
|
||||||
messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id)))
|
messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id)))
|
||||||
w.delete()
|
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':
|
elif action == 'export':
|
||||||
exportchoice = ExportChoices(request.POST)
|
exportchoice = ExportChoices(request.POST)
|
||||||
if exportchoice.is_valid():
|
if exportchoice.is_valid():
|
||||||
|
|||||||
Reference in New Issue
Block a user