diff --git a/rowers/dataprep.py b/rowers/dataprep.py
index cae865fe..0864eec7 100644
--- a/rowers/dataprep.py
+++ b/rowers/dataprep.py
@@ -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
diff --git a/rowers/forms.py b/rowers/forms.py
index 44469278..2db9b8bf 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -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'),
diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html
index 4d41fffa..cd31fc05 100644
--- a/rowers/templates/list_workouts.html
+++ b/rowers/templates/list_workouts.html
@@ -110,6 +110,9 @@
{% endif %}
{{ workout.date|date:"Y-m-d" }} {{ workout.starttime|date:"H:i" }}
+ {% if workout.privacy == 'hidden' %}
+
+ {% endif %}
{% if workout.duplicate %}
{% endif %}
diff --git a/rowers/templates/rower_simplepreferences.html b/rowers/templates/rower_simplepreferences.html
index 9accb6d9..328b0d70 100644
--- a/rowers/templates/rower_simplepreferences.html
+++ b/rowers/templates/rower_simplepreferences.html
@@ -62,36 +62,36 @@
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 }} |
+ <{{ user.rower.pw_ut1|target_spm_erg:user }} |
+ <{{ user.rower.pw_ut1|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 }} |
+ {{ user.rower.pw_ut1|target_spm_erg:user }}-{{ user.rower.pw_at|target_spm_erg:user }} |
+ {{ user.rower.pw_ut1|target_spm_otw:user }}-{{ user.rower.pw_at|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 }} |
+ {{ user.rower.pw_at|target_spm_erg:user }}-{{ user.rower.pw_tr|target_spm_erg:user }} |
+ {{ user.rower.pw_at|target_spm_otw:user }}-{{ user.rower.pw_tr|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 }} |
+ {{ user.rower.pw_tr|target_spm_erg:user }}-{{ user.rower.pw_an|target_spm_erg:user }} |
+ {{ user.rower.pw_tr|target_spm_otw:user }}-{{ user.rower.pw_an|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 }} |
+ >{{ user.rower.pw_an|target_spm_erg:user }} |
+ >{{ user.rower.pw_an|target_spm_otw:user }} |
diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz
index 4a3b747d..4528d655 100644
Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ
diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py
index 43b7af02..25106afa 100644
--- a/rowers/views/workoutviews.py
+++ b/rowers/views/workoutviews.py
@@ -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():