diff --git a/rowers/models.py b/rowers/models.py index 7af5cadb..a5c30698 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1271,6 +1271,8 @@ class Rower(models.Model): imports_are_private = models.BooleanField(default=False, verbose_name='Make imports private by default') show_commutes = models.BooleanField(default=False, verbose_name='Show commutes in workout list') small_commutes = models.BooleanField(default=False, verbose_name='Show commutes on a single line in workout list') + show_wups_cds = models.BooleanField(default=False, verbose_name='Show warmups and cooldowns in workout list') + small_wups_cds = models.BooleanField(default=False, verbose_name='Show warmups and cooldowns on a single line in workout list') # Friends/Team friends = models.ManyToManyField("self", blank=True) @@ -5217,6 +5219,8 @@ class AccountRowerForm(ModelForm): 'defaultlandingpage3', 'show_commutes', 'small_commutes', + 'show_wups_cds', + 'small_wups_cds', 'offercoaching', 'autojoin', 'emailalternatives'] widgets = { diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html index e1e06146..252ebe2f 100644 --- a/rowers/templates/list_workouts.html +++ b/rowers/templates/list_workouts.html @@ -34,12 +34,18 @@ {% endif %} -{% if nr_commutes %} +{% if nr_commutes or nr_wups_cds %}

- Show {{ nr_commutes }} commutes + {% if nr_commutes %} + Show {{ nr_commutes }} commutes  + {% endif %} + {% if nr_wups_cds %} + Show {{ nr_wups_cds }} warmups and cooldowns + {% endif %}

{% endif %} +
  • @@ -109,7 +115,7 @@ {% endif %} {% for workout in workouts %} - {% if not workout.is_commute or not user.rower.small_commutes %} + {% if workout|show_normal %}
  • {% if request.GET.selectworkouts %} @@ -124,6 +130,14 @@ {% if workout.rankingpiece %} {% endif %} + {% if workout.is_commute %} + Commute + {% endif %} + {% if workout.sub_type == "Warming Up" %} + Warming Up + {% elif workout.sub_type == "Cooling Down" %} + Cooling Down + {% endif %} {% if workout.rpe == 0 and not workout.duplicate %} No RPE @@ -207,7 +221,7 @@
  • - {% elif show_commutes and user.rower.small_commutes %} + {% elif workout|show_commute %}
  • @@ -251,6 +265,54 @@
  • + {% elif workout|show_wup_cd %} +
  • +
    +
    + {% if workout.sub_type == "Warming Up" %} + + {% else %} + + {% endif %} +
    + +
    + Distance + {{ workout.distance|distanceprint }} +
    +
    + Time + {{ workout.duration |durationprint:"%H:%M:%S.%f" }} +
    +
    + {% if workout|may_edit:request %} + + + {% else %} +   + {% endif %} +
    +
    + {% if workout|may_edit:request %} + {% if rower.defaultlandingpage2 != 'workout_delete' %} + + + {% else %} + + + {% endif %} + {% else %} +   + {% endif %} +
    +
    +
  • {% endif %} {% endfor %} diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index d6fe9ff1..35f6542c 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -48,6 +48,25 @@ from six import string_types register = template.Library() +@register.filter +def show_normal(workout): + # is commute + hide_commute = workout.is_commute and (workout.user.small_commutes or not workout.user.show_commutes) + hide_warmup = workout.sub_type in ["Warming Up", "Cooling Down"] and (workout.user.small_wups_cds or not workout.user.show_wups_cds) + return not hide_commute and not hide_warmup + +@register.filter +def show_commute(workout): + return workout.is_commute and workout.user.small_commutes + +@register.filter +def show_wup_cd(workout): + return workout.sub_type in ["Warming Up", "Cooling Down"] and workout.user.small_wups_cds + +@register.filter +def is_wup_cd(workout): + return workout.sub_type in ["Warm Up", "Cooling Down"] + @register.filter def getworkoutname(id): try: diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index f33197d1..c4e640aa 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 c11943fc..b23fa352 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -2156,6 +2156,8 @@ def workouts_view(request, message='', successmessage='', show_commutes = request.GET.get('show_commutes', False) if show_commutes == 'true': show_commutes = True + + show_wups_cds = request.GET.get('show_wups_cds', False) # check if access is allowed @@ -2281,8 +2283,13 @@ def workouts_view(request, message='', successmessage='', if not show_commutes: nr_commutes = workouts.filter(is_commute=True).count() workouts = workouts.exclude(is_commute=True) - - + + nr_wups_cds = 0 + show_wups_cds = show_wups_cds or r.show_wups_cds + if not show_wups_cds: + nr_wups_cds = workouts.filter(sub_type__in=['Warming Up', 'Cooling Down']).count() + workouts = workouts.exclude(sub_type='Warming Up').exclude(sub_type='Cooling Down') + workoutsnohr = workouts.exclude(averagehr__isnull=False) for w in workoutsnohr: # pragma: no cover _ = dataprep.workout_trimp(w) @@ -2375,6 +2382,8 @@ def workouts_view(request, message='', successmessage='', 'totalhours': totalhours, 'nr_commutes': nr_commutes, 'show_commutes': show_commutes, + 'show_wups_cds': show_wups_cds, + 'nr_wups_cds': nr_wups_cds, })