changed links to paidplans
was promembership
This commit is contained in:
@@ -93,7 +93,7 @@ and inspired by the RowPro Dan Burpee spreadsheet
|
|||||||
|
|
||||||
<p>We offer three plans. Click on the name of the plan to find out more:
|
<p>We offer three plans. Click on the name of the plan to find out more:
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="/rowers/promembership">Pro Membership</a>,
|
<li><a href="/rowers/paidplans">Pro Membership</a>,
|
||||||
offering additional rowing metrics and analysis
|
offering additional rowing metrics and analysis
|
||||||
tools for individual rowers.</li>
|
tools for individual rowers.</li>
|
||||||
<li><a href="/rowers/planmembership">Self-Coach Membership</a>,
|
<li><a href="/rowers/planmembership">Self-Coach Membership</a>,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<h1>{{ workout.name }} - Advanced</h1>
|
<h1>{{ workout.name }} - Advanced</h1>
|
||||||
{% if user.rower.rowerplan == 'basic' %}
|
{% if user.rower.rowerplan == 'basic' %}
|
||||||
<p>Functionality marked with an asterisk (*) is limited to the paid plans. See
|
<p>Functionality marked with an asterisk (*) is limited to the paid plans. See
|
||||||
<a href="/rowers/promembership">the page about Pro membership</a>
|
<a href="/rowers/paidplans">the page about Pro membership</a>
|
||||||
for more information and to sign up for Pro Membership</a></p>
|
for more information and to sign up for Pro Membership</a></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/compare/{{ workout.id }}">Compare Workouts</a>
|
<a class="button blue small" href="/rowers/workout/compare/{{ workout.id }}">Compare Workouts</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership/">Compare Workouts*</a>
|
<a class="button blue small" href="/rowers/paidplans/">Compare Workouts*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p>
|
<p>
|
||||||
Compare this workout to other workouts. Plot HR, SPM, or pace vs time or distance for the two workouts.
|
Compare this workout to other workouts. Plot HR, SPM, or pace vs time or distance for the two workouts.
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/editintervals">Edit Intervals</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/editintervals">Edit Intervals</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Edit Intervals*</a>
|
<a class="button blue small" href="/rowers/paidplans">Edit Intervals*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<span class="tooltiptext">Enter or change the interval and summary data for your workout</span>
|
<span class="tooltiptext">Enter or change the interval and summary data for your workout</span>
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/adddistanceplot2">Dist Metrics Plot</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/adddistanceplot2">Dist Metrics Plot</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Dist Metrics Plot*</a>
|
<a class="button blue small" href="/rowers/paidplans">Dist Metrics Plot*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/addtimeplot2">Time Metrics Plot</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/addtimeplot2">Time Metrics Plot</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Time Metrics Plot*</a>
|
<a class="button blue small" href="/rowers/paidplans">Time Metrics Plot*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/histo">Power Histogram</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/histo">Power Histogram</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Power Histogram*</a>
|
<a class="button blue small" href="/rowers/paidplans">Power Histogram*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workouts-join-select">Glue</a>
|
<a class="button blue small" href="/rowers/workouts-join-select">Glue</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Glue*</a>
|
<a class="button blue small" href="/rowers/paidplans">Glue*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/fusion/{{ workout.id }}/">Sensor Fusion</a>
|
<a class="button blue small" href="/rowers/workout/fusion/{{ workout.id }}/">Sensor Fusion</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Sensor Fusion*</a>
|
<a class="button blue small" href="/rowers/paidplans">Sensor Fusion*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/split">Split Workout</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/split">Split Workout</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Split Workout*</a>
|
<a class="button blue small" href="/rowers/paidplans">Split Workout*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<h1>{{ workout.name }} - Advanced OTW</h1>
|
<h1>{{ workout.name }} - Advanced OTW</h1>
|
||||||
{% if user.rower.rowerplan == 'basic' %}
|
{% if user.rower.rowerplan == 'basic' %}
|
||||||
<p>Functionality marked with an asterisk (*) is limited to the paid plans. See
|
<p>Functionality marked with an asterisk (*) is limited to the paid plans. See
|
||||||
<a href="/rowers/promembership">the page about Pro membership</a>
|
<a href="/rowers/paidplans">the page about Pro membership</a>
|
||||||
for more information and to sign up for Pro Membership</a></p>
|
for more information and to sign up for Pro Membership</a></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="grid_2 alpha">
|
<div class="grid_2 alpha">
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/compare/{{ workout.id }}">Compare Workouts</a>
|
<a class="button blue small" href="/rowers/workout/compare/{{ workout.id }}">Compare Workouts</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Compare Workouts*</a>
|
<a class="button blue small" href="/rowers/paidplans">Compare Workouts*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/editintervals">Edit Intervals</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/editintervals">Edit Intervals</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Edit Intervals*</a>
|
<a class="button blue small" href="/rowers/paidplans">Edit Intervals*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<span class="tooltiptext">Enter or change the interval and summary data for your workout</span>
|
<span class="tooltiptext">Enter or change the interval and summary data for your workout</span>
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/crewnerdsummary">CrewNerd Summary</a>
|
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/crewnerdsummary">CrewNerd Summary</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">CrewNerd Summary*</a>
|
<a class="button blue small" href="/rowers/paidplans">CrewNerd Summary*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/forcecurve">Stroke Profile (Empower)</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/forcecurve">Stroke Profile (Empower)</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Stroke Profile (Empower)*</a>
|
<a class="button blue small" href="/rowers/paidplans">Stroke Profile (Empower)*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<span class="tooltiptext">Analyze your stroke force profile (need Empower Oarlock data)</span> <p>
|
<span class="tooltiptext">Analyze your stroke force profile (need Empower Oarlock data)</span> <p>
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/addotwpowerplot">OTW Power Plot</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/addotwpowerplot">OTW Power Plot</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">OTW Power Plot*</a>
|
<a class="button blue small" href="/rowers/paidplans">OTW Power Plot*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<span class="tooltiptext">Note: You must run the OTW calculations under Geeky Stuff first. Otherwise the plot will be empty</span>
|
<span class="tooltiptext">Note: You must run the OTW calculations under Geeky Stuff first. Otherwise the plot will be empty</span>
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/geeky">Geeky Stuff</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/geeky">Geeky Stuff</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Geeky Stuff*</a>
|
<a class="button blue small" href="/rowers/paidplans">Geeky Stuff*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/smoothenpace">Smooth out Pace Data</a>
|
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/smoothenpace">Smooth out Pace Data</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Smooth out Pace Data*</a>
|
<a class="button blue small" href="/rowers/paidplans">Smooth out Pace Data*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/undosmoothenpace">Raw Data</a>
|
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/undosmoothenpace">Raw Data</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Reset Smoothing*</a>
|
<a class="button blue small" href="/rowers/paidplans">Reset Smoothing*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -193,7 +193,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workouts-join-select">Glue</a>
|
<a class="button blue small" href="/rowers/workouts-join-select">Glue</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Glue*</a>
|
<a class="button blue small" href="/rowers/paidplans">Glue*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -205,7 +205,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/fusion/{{ workout.id }}/">Sensor Fusion</a>
|
<a class="button blue small" href="/rowers/workout/fusion/{{ workout.id }}/">Sensor Fusion</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Sensor Fusion*</a>
|
<a class="button blue small" href="/rowers/paidplans">Sensor Fusion*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/split">Split Workout</a>
|
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/split">Split Workout</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button blue small" href="/rowers/promembership">Split Workout*</a>
|
<a class="button blue small" href="/rowers/paidplans">Split Workout*</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
||||||
<h6 class="graytext">Pro Member</h6>
|
<h6 class="graytext">Pro Member</h6>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="grid_1"><a class="button green small" href="/rowers/promembership">Upgrade to Pro</a></div>
|
<div class="grid_1"><a class="button green small" href="/rowers/paidplans">Upgrade to Pro</a></div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% for key, value in axchoicespro.items %}
|
{% for key, value in axchoicespro.items %}
|
||||||
<a class="button rosy small" href="/rowers/promembership">{{ value }}</a>
|
<a class="button rosy small" href="/rowers/paidplans">{{ value }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
{% for key, value in axchoicespro.items %}
|
{% for key, value in axchoicespro.items %}
|
||||||
{% if key not in noylist %}
|
{% if key not in noylist %}
|
||||||
<a class="button rosy small" href="/rowers/promembership">{{ value }} (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">{{ value }} (Pro)</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -76,14 +76,14 @@
|
|||||||
<a class="button blue small alpha" href="/rowers/workout/{{ id }}/flexchart/driveenergy/{{ yparam1 }}/{{ yparam2 }}/scatter">Work per Stroke</a>
|
<a class="button blue small alpha" href="/rowers/workout/{{ id }}/flexchart/driveenergy/{{ yparam1 }}/{{ yparam2 }}/scatter">Work per Stroke</a>
|
||||||
<a class="button blue small alpha" href="/rowers/workout/{{ id }}/flexchart/drivespeed/{{ yparam1 }}/{{ yparam2 }}/scatter">Drive Speed</a>
|
<a class="button blue small alpha" href="/rowers/workout/{{ id }}/flexchart/drivespeed/{{ yparam1 }}/{{ yparam2 }}/scatter">Drive Speed</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button rosy small" href="/rowers/promembership">Power (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Power (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">HR (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">HR (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">SPM (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">SPM (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Peak Force (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Peak Force (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Average Force (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Average Force (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Drive Length (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Drive Length (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Work per Stroke (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Work per Stroke (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Drive Speed (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Drive Speed (Pro)</a>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@@ -103,11 +103,11 @@
|
|||||||
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/driveenergy/{{ yparam2 }}/{{ plottype }}">Work per Stroke</a>
|
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/driveenergy/{{ yparam2 }}/{{ plottype }}">Work per Stroke</a>
|
||||||
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/drivespeed/{{ yparam2 }}/{{ plottype }}">Drive Speed</a>
|
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/drivespeed/{{ yparam2 }}/{{ plottype }}">Drive Speed</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button rosy small" href="/rowers/promembership">Peak Force (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Peak Force (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Average Force (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Average Force (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Drive Length (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Drive Length (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Work per Stroke (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Work per Stroke (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Drive Speed (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Drive Speed (Pro)</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -126,11 +126,11 @@
|
|||||||
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/driveenergy/{{ plottype }}">Work per Stroke</a>
|
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/driveenergy/{{ plottype }}">Work per Stroke</a>
|
||||||
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/drivespeed/{{ plottype }}">Drive Speed</a>
|
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/drivespeed/{{ plottype }}">Drive Speed</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button rosy small" href="/rowers/promembership">Peak Force (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Peak Force (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Average Force (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Average Force (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Drive Length (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Drive Length (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Work per Stroke (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Work per Stroke (Pro)</a>
|
||||||
<a class="button rosy small" href="/rowers/promembership">Drive Speed (Pro)</a>
|
<a class="button rosy small" href="/rowers/paidplans">Drive Speed (Pro)</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/None/{{ plottype }}">None</a>
|
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/None/{{ plottype }}">None</a>
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
to the partner site</p>
|
to the partner site</p>
|
||||||
|
|
||||||
<p>These settings only have effect if you are a user on one
|
<p>These settings only have effect if you are a user on one
|
||||||
of the <a href="/rowers/promembership">paid plans</a></p>
|
of the <a href="/rowers/paidplans">paid plans</a></p>
|
||||||
|
|
||||||
<div class="grid_6 alpha">
|
<div class="grid_6 alpha">
|
||||||
<form id="importexportform" method="post">
|
<form id="importexportform" method="post">
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
{% if user|is_promember %}
|
{% if user|is_promember %}
|
||||||
<a href="/rowers/workouts-join-select">
|
<a href="/rowers/workouts-join-select">
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="/rowers/promembership">
|
<a href="/rowers/paidplans">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<i class="fas fa-layer-plus fa-fw"></i> Glue Workouts
|
<i class="fas fa-layer-plus fa-fw"></i> Glue Workouts
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
<p>Missing your best pieces? Upload stroke data of any Concept2
|
<p>Missing your best pieces? Upload stroke data of any Concept2
|
||||||
ranking piece and they will be automatically added to this page.</p>
|
ranking piece and they will be automatically added to this page.</p>
|
||||||
<p> Don't have stroke data for official Concept2 ranking pieces?
|
<p> Don't have stroke data for official Concept2 ranking pieces?
|
||||||
The <a href="/rowers/promembership">PRO membership</a> ranking piece functionality
|
The <a href="/rowers/paidplans">PRO membership</a> ranking piece functionality
|
||||||
allows you to include your best non ranking pieces and even use
|
allows you to include your best non ranking pieces and even use
|
||||||
parts of workouts for improved calculation accuracy.
|
parts of workouts for improved calculation accuracy.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
If you find it to be useful, please help us cover
|
If you find it to be useful, please help us cover
|
||||||
our hosting costs and gain access to additional functionality
|
our hosting costs and gain access to additional functionality
|
||||||
by signing on as a Pro member:
|
by signing on as a Pro member:
|
||||||
<a href="https://rowsandall.com/rowers/promembership">https://rowsandall.com/rowers/promembership</a>
|
<a href="https://rowsandall.com/rowers/paidplans">https://rowsandall.com/rowers/paidplans</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
108
rowers/views.py
108
rowers/views.py
@@ -1647,7 +1647,7 @@ def start_trial_view(request):
|
|||||||
|
|
||||||
if r.protrialexpires is not None:
|
if r.protrialexpires is not None:
|
||||||
messages.error(request,'You do not qualify for a trial')
|
messages.error(request,'You do not qualify for a trial')
|
||||||
url = '/rowers/promembership'
|
url = '/rowers/paidplans'
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
r.protrialexpires = datetime.date.today()+datetime.timedelta(13)
|
r.protrialexpires = datetime.date.today()+datetime.timedelta(13)
|
||||||
@@ -1674,7 +1674,7 @@ def start_plantrial_view(request):
|
|||||||
|
|
||||||
if r.plantrialexpires is not None:
|
if r.plantrialexpires is not None:
|
||||||
messages.error(request,'You do not qualify for a trial')
|
messages.error(request,'You do not qualify for a trial')
|
||||||
url = '/rowers/promembership'
|
url = '/rowers/paidplans'
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
r.plantrialexpires = datetime.date.today()+datetime.timedelta(13)
|
r.plantrialexpires = datetime.date.today()+datetime.timedelta(13)
|
||||||
@@ -3512,7 +3512,7 @@ def planrequired_view(request):
|
|||||||
|
|
||||||
return render(request,'promembership.html')
|
return render(request,'promembership.html')
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def fitnessmetric_view(request,id=0,mode='rower',
|
def fitnessmetric_view(request,id=0,mode='rower',
|
||||||
@@ -3555,7 +3555,7 @@ def fitnessmetric_view(request,id=0,mode='rower',
|
|||||||
|
|
||||||
|
|
||||||
# Show the EMpower Oarlock generated Stroke Profile
|
# Show the EMpower Oarlock generated Stroke Profile
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership/",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans/",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
||||||
@@ -3687,7 +3687,7 @@ def workout_histo_view(request,id=0):
|
|||||||
|
|
||||||
|
|
||||||
# Histogram for a date/time range
|
# Histogram for a date/time range
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def histo(request,theuser=0,
|
def histo(request,theuser=0,
|
||||||
@@ -4802,7 +4802,7 @@ def rankings_view2(request,theuser=0,
|
|||||||
'teams':get_my_teams(request.user),
|
'teams':get_my_teams(request.user),
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_update_cp_view(request,id=0):
|
def workout_update_cp_view(request,id=0):
|
||||||
@@ -4830,7 +4830,7 @@ def workout_update_cp_view(request,id=0):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
# Show ranking distances including predicted paces
|
# Show ranking distances including predicted paces
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def otwrankings_view(request,theuser=0,
|
def otwrankings_view(request,theuser=0,
|
||||||
@@ -5235,7 +5235,7 @@ def otwcp_toadmin_view(request,theuser=0,
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
# Show ranking distances including predicted paces
|
# Show ranking distances including predicted paces
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def oterankings_view(request,theuser=0,
|
def oterankings_view(request,theuser=0,
|
||||||
@@ -5677,7 +5677,7 @@ def workout_setprivate_view(request,id,
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
# Joining workout
|
# Joining workout
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workouts_join_view(request):
|
def workouts_join_view(request):
|
||||||
@@ -5723,7 +5723,7 @@ def workouts_join_view(request):
|
|||||||
url = reverse(workouts_join_select)
|
url = reverse(workouts_join_select)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workouts_join_select(request,
|
def workouts_join_select(request,
|
||||||
@@ -6431,7 +6431,7 @@ def multi_compare_view(request,id=0,userid=0):
|
|||||||
|
|
||||||
|
|
||||||
# Multi Flex Chart with Grouping
|
# Multi Flex Chart with Grouping
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def user_multiflex_select(request,
|
def user_multiflex_select(request,
|
||||||
@@ -6637,7 +6637,7 @@ def user_multiflex_select(request,
|
|||||||
'teams':get_my_teams(request.user),
|
'teams':get_my_teams(request.user),
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def multiflex_data(request,userid=0,
|
def multiflex_data(request,userid=0,
|
||||||
@@ -6883,7 +6883,7 @@ def multiflex_data(request,userid=0,
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def multiflex_view(request,userid=0,
|
def multiflex_view(request,userid=0,
|
||||||
@@ -7050,7 +7050,7 @@ def multiflex_view(request,userid=0,
|
|||||||
|
|
||||||
|
|
||||||
# Box plots
|
# Box plots
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def user_boxplot_select(request,
|
def user_boxplot_select(request,
|
||||||
@@ -7258,7 +7258,7 @@ def user_boxplot_select(request,
|
|||||||
'teams':get_my_teams(request.user),
|
'teams':get_my_teams(request.user),
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def boxplot_view_data(request,userid=0,
|
def boxplot_view_data(request,userid=0,
|
||||||
@@ -7365,7 +7365,7 @@ def boxplot_view_data(request,userid=0,
|
|||||||
"div":div,
|
"div":div,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def boxplot_view(request,userid=0,
|
def boxplot_view(request,userid=0,
|
||||||
@@ -7722,7 +7722,7 @@ def workouts_view(request,message='',successmessage='',
|
|||||||
|
|
||||||
|
|
||||||
# List of workouts to compare a selected workout to
|
# List of workouts to compare a selected workout to
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_comparison_list(request,id=0,message='',successmessage='',
|
def workout_comparison_list(request,id=0,message='',successmessage='',
|
||||||
@@ -7808,7 +7808,7 @@ def workout_comparison_list(request,id=0,message='',successmessage='',
|
|||||||
|
|
||||||
|
|
||||||
# List of workouts to compare a selected workout to
|
# List of workouts to compare a selected workout to
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_fusion_list(request,id=0,message='',successmessage='',
|
def workout_fusion_list(request,id=0,message='',successmessage='',
|
||||||
@@ -8011,7 +8011,7 @@ def workout_view(request,id=0):
|
|||||||
|
|
||||||
|
|
||||||
# Resets stroke data to raw data (pace)
|
# Resets stroke data to raw data (pace)
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_undo_smoothenpace_view(
|
def workout_undo_smoothenpace_view(
|
||||||
@@ -8050,7 +8050,7 @@ def workout_undo_smoothenpace_view(
|
|||||||
|
|
||||||
|
|
||||||
# Data smoothing of pace data
|
# Data smoothing of pace data
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||||
@@ -8103,7 +8103,7 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
# Process CrewNerd Summary CSV and update summary
|
# Process CrewNerd Summary CSV and update summary
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
||||||
@@ -8180,7 +8180,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
|||||||
'id':row.id})
|
'id':row.id})
|
||||||
|
|
||||||
# Get weather for given location and date/time
|
# Get weather for given location and date/time
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Pro plan or higher",
|
message="This functionality requires a Pro plan or higher",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workout_downloadwind_view(request,id=0,
|
def workout_downloadwind_view(request,id=0,
|
||||||
@@ -8248,7 +8248,7 @@ def workout_downloadwind_view(request,id=0,
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
# Get weather for given location and date/time
|
# Get weather for given location and date/time
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
||||||
def workout_downloadmetar_view(request,id=0,
|
def workout_downloadmetar_view(request,id=0,
|
||||||
airportcode=None,
|
airportcode=None,
|
||||||
message="",successmessage=""):
|
message="",successmessage=""):
|
||||||
@@ -8315,7 +8315,7 @@ def workout_downloadmetar_view(request,id=0,
|
|||||||
|
|
||||||
|
|
||||||
# Show form to update wind data
|
# Show form to update wind data
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
||||||
def workout_wind_view(request,id=0,message="",successmessage=""):
|
def workout_wind_view(request,id=0,message="",successmessage=""):
|
||||||
row = get_workout(id)
|
row = get_workout(id)
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
@@ -8451,7 +8451,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
|
|||||||
|
|
||||||
|
|
||||||
# Show form to update River stream data (for river dwellers)
|
# Show form to update River stream data (for river dwellers)
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
||||||
def workout_stream_view(request,id=0,message="",successmessage=""):
|
def workout_stream_view(request,id=0,message="",successmessage=""):
|
||||||
row = get_workout(id)
|
row = get_workout(id)
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
@@ -8537,7 +8537,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
|
|||||||
'the_div':div})
|
'the_div':div})
|
||||||
|
|
||||||
# Form to set average crew weight and boat type, then run power calcs
|
# Form to set average crew weight and boat type, then run power calcs
|
||||||
@user_passes_test(ispromember, login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(ispromember, login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
||||||
w = get_workout(id)
|
w = get_workout(id)
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
@@ -8846,7 +8846,7 @@ def instroke_chart(request,id=0,metric=''):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
# Cumulative stats page
|
# Cumulative stats page
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
||||||
def cumstats(request,theuser=0,
|
def cumstats(request,theuser=0,
|
||||||
startdate=timezone.now()-datetime.timedelta(days=30),
|
startdate=timezone.now()-datetime.timedelta(days=30),
|
||||||
enddate=timezone.now(),
|
enddate=timezone.now(),
|
||||||
@@ -12484,7 +12484,7 @@ def workout_upload_view(request,
|
|||||||
|
|
||||||
|
|
||||||
# This is the main view for processing uploaded files
|
# This is the main view for processing uploaded files
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def team_workout_upload_view(request,message="",
|
def team_workout_upload_view(request,message="",
|
||||||
successmessage="",
|
successmessage="",
|
||||||
uploadoptions={
|
uploadoptions={
|
||||||
@@ -12891,7 +12891,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
# Split a workout
|
# Split a workout
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
||||||
def workout_split_view(request,id=id):
|
def workout_split_view(request,id=id):
|
||||||
row = get_workout_permitted(request.user,id)
|
row = get_workout_permitted(request.user,id)
|
||||||
|
|
||||||
@@ -12982,7 +12982,7 @@ def workout_split_view(request,id=id):
|
|||||||
|
|
||||||
|
|
||||||
# Fuse two workouts
|
# Fuse two workouts
|
||||||
@user_passes_test(ispromember,login_url="/rowers/promembership",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
|
||||||
def workout_fusion_view(request,id1=0,id2=1):
|
def workout_fusion_view(request,id1=0,id2=1):
|
||||||
|
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
@@ -14727,7 +14727,7 @@ def rower_teams_view(request,message='',successmessage=''):
|
|||||||
'myinvites':myinvites,
|
'myinvites':myinvites,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def invitation_revoke_view(request,id):
|
def invitation_revoke_view(request,id):
|
||||||
res,text = teams.revoke_invite(request.user,id)
|
res,text = teams.revoke_invite(request.user,id)
|
||||||
if res:
|
if res:
|
||||||
@@ -14741,7 +14741,7 @@ def invitation_revoke_view(request,id):
|
|||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def manager_member_drop_view(request,teamid,userid,
|
def manager_member_drop_view(request,teamid,userid,
|
||||||
message='',successmessage=''):
|
message='',successmessage=''):
|
||||||
rower = Rower.objects.get(user__id=userid)
|
rower = Rower.objects.get(user__id=userid)
|
||||||
@@ -14755,7 +14755,7 @@ def manager_member_drop_view(request,teamid,userid,
|
|||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def manager_requests_view(request,code=None,message='',successmessage=''):
|
def manager_requests_view(request,code=None,message='',successmessage=''):
|
||||||
if code:
|
if code:
|
||||||
res,text = teams.process_request_code(request.user,code)
|
res,text = teams.process_request_code(request.user,code)
|
||||||
@@ -14807,7 +14807,7 @@ def request_revoke_view(request,id=0):
|
|||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def request_reject_view(request,id=0):
|
def request_reject_view(request,id=0):
|
||||||
res,text = teams.reject_request(request.user,id)
|
res,text = teams.reject_request(request.user,id)
|
||||||
|
|
||||||
@@ -14820,7 +14820,7 @@ def request_reject_view(request,id=0):
|
|||||||
|
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def invitation_reject_view(request,id=0):
|
def invitation_reject_view(request,id=0):
|
||||||
res,text = teams.reject_invitation(request.user,id)
|
res,text = teams.reject_invitation(request.user,id)
|
||||||
|
|
||||||
@@ -14856,7 +14856,7 @@ def rower_invitations_view(request,code=None,message='',successmessage=''):
|
|||||||
})
|
})
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def team_edit_view(request,id=0):
|
def team_edit_view(request,id=0):
|
||||||
try:
|
try:
|
||||||
t = Team.objects.get(id=id)
|
t = Team.objects.get(id=id)
|
||||||
@@ -14920,7 +14920,7 @@ def team_edit_view(request,id=0):
|
|||||||
'team':t,
|
'team':t,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def team_create_view(request):
|
def team_create_view(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
teamcreateform = TeamForm(request.POST)
|
teamcreateform = TeamForm(request.POST)
|
||||||
@@ -14963,7 +14963,7 @@ def team_create_view(request):
|
|||||||
'breadcrumbs':breadcrumbs,
|
'breadcrumbs':breadcrumbs,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def team_deleteconfirm_view(request,id):
|
def team_deleteconfirm_view(request,id):
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
try:
|
try:
|
||||||
@@ -14999,7 +14999,7 @@ def team_deleteconfirm_view(request,id):
|
|||||||
'active':'nav-teams',
|
'active':'nav-teams',
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def team_delete_view(request,id):
|
def team_delete_view(request,id):
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
try:
|
try:
|
||||||
@@ -15015,7 +15015,7 @@ def team_delete_view(request,id):
|
|||||||
response = HttpResponseRedirect(url)
|
response = HttpResponseRedirect(url)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans",redirect_field_name=None)
|
||||||
def team_members_stats_view(request,id):
|
def team_members_stats_view(request,id):
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
try:
|
try:
|
||||||
@@ -15112,7 +15112,7 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt',
|
|||||||
})
|
})
|
||||||
|
|
||||||
# Cloning sessions
|
# Cloning sessions
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans/",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_multiclone_view(
|
def plannedsession_multiclone_view(
|
||||||
@@ -15242,7 +15242,7 @@ def plannedsession_multiclone_view(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Individual user creates training for himself
|
# Individual user creates training for himself
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans/",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_create_view(request,
|
def plannedsession_create_view(request,
|
||||||
@@ -15379,7 +15379,7 @@ def plannedsession_create_view(request,
|
|||||||
'timeperiod':timeperiod,
|
'timeperiod':timeperiod,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans/",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_multicreate_view(request,
|
def plannedsession_multicreate_view(request,
|
||||||
@@ -15492,7 +15492,7 @@ def plannedsession_multicreate_view(request,
|
|||||||
return render(request,'plannedsession_multicreate.html',context)
|
return render(request,'plannedsession_multicreate.html',context)
|
||||||
|
|
||||||
# Manager creates sessions for entire team
|
# Manager creates sessions for entire team
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans/",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_teamcreate_view(request,
|
def plannedsession_teamcreate_view(request,
|
||||||
teamid=0,userid=0):
|
teamid=0,userid=0):
|
||||||
@@ -15659,7 +15659,7 @@ def plannedsession_teamcreate_view(request,
|
|||||||
})
|
})
|
||||||
|
|
||||||
# Manager edits sessions for entire team
|
# Manager edits sessions for entire team
|
||||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
|
@user_passes_test(iscoachmember,login_url="/rowers/paidplans/",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_teamedit_view(request,
|
def plannedsession_teamedit_view(request,
|
||||||
sessionid=0,userid=0):
|
sessionid=0,userid=0):
|
||||||
@@ -15815,7 +15815,7 @@ def plannedsession_teamedit_view(request,
|
|||||||
'plannedsessions':sps,
|
'plannedsessions':sps,
|
||||||
})
|
})
|
||||||
|
|
||||||
#@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
|
#@user_passes_test(iscoachmember,login_url="/rowers/paidplans/",
|
||||||
# redirect_field_name=None)
|
# redirect_field_name=None)
|
||||||
@login_required()
|
@login_required()
|
||||||
def plannedsessions_coach_view(request,
|
def plannedsessions_coach_view(request,
|
||||||
@@ -16264,7 +16264,7 @@ def plannedsessions_manage_view(request,userid=0,
|
|||||||
|
|
||||||
# Clone an existing planned session
|
# Clone an existing planned session
|
||||||
# need clarity on cloning behavior time shift
|
# need clarity on cloning behavior time shift
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans/",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_clone_view(request,id=0,userid=0):
|
def plannedsession_clone_view(request,id=0,userid=0):
|
||||||
@@ -16325,7 +16325,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
|
|||||||
|
|
||||||
|
|
||||||
# Edit an existing planned session
|
# Edit an existing planned session
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans/",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def plannedsession_edit_view(request,id=0,userid=0):
|
def plannedsession_edit_view(request,id=0,userid=0):
|
||||||
@@ -18364,7 +18364,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
|
|||||||
'w_form':w_form,
|
'w_form':w_form,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def rower_create_trainingplan(request,userid=0):
|
def rower_create_trainingplan(request,userid=0):
|
||||||
@@ -18468,7 +18468,7 @@ def rower_create_trainingplan(request,userid=0):
|
|||||||
'targetform':targetform,
|
'targetform':targetform,
|
||||||
})
|
})
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def rower_delete_trainingtarget(request,id=0):
|
def rower_delete_trainingtarget(request,id=0):
|
||||||
@@ -18488,7 +18488,7 @@ def rower_delete_trainingtarget(request,id=0):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def rower_delete_trainingplan(request,id=0):
|
def rower_delete_trainingplan(request,id=0):
|
||||||
@@ -18801,7 +18801,7 @@ class MacroCycleDelete(DeleteView):
|
|||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def rower_trainingplan_view(request,
|
def rower_trainingplan_view(request,
|
||||||
@@ -19320,7 +19320,7 @@ def allsundays(startdate,enddate):
|
|||||||
yield d
|
yield d
|
||||||
d += timedelta(days=7)
|
d += timedelta(days=7)
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def planmesocyclebyweek(request,id=0,userid=0):
|
def planmesocyclebyweek(request,id=0,userid=0):
|
||||||
@@ -19381,7 +19381,7 @@ def allmonths(startdate,enddate):
|
|||||||
yield d
|
yield d
|
||||||
d = datetime.date(d.year+(d.month / 12),((d.month % 12) + 1),1)
|
d = datetime.date(d.year+(d.month / 12),((d.month % 12) + 1),1)
|
||||||
|
|
||||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership",
|
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||||
message="This functionality requires a Coach or Self-Coach plan",
|
message="This functionality requires a Coach or Self-Coach plan",
|
||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def planmacrocyclebymonth(request,id=0,userid=0):
|
def planmacrocyclebymonth(request,id=0,userid=0):
|
||||||
|
|||||||
@@ -236,7 +236,7 @@
|
|||||||
{% if user.rower.planexpires|date_dif|ddays < 4 %}
|
{% if user.rower.planexpires|date_dif|ddays < 4 %}
|
||||||
<li class="grid_4">
|
<li class="grid_4">
|
||||||
<p class="successmessage">
|
<p class="successmessage">
|
||||||
You have {{ user.rower.planexpires|date_dif|ddays }} days left of your one year subscription. Please renew on or before {{ user.rower.planexpires }} or your plan will be reset to Basic. Click <a href="/rowers/promembership">here</a> to renew your membership.</p>
|
You have {{ user.rower.planexpires|date_dif|ddays }} days left of your one year subscription. Please renew on or before {{ user.rower.planexpires }} or your plan will be reset to Basic. Click <a href="/rowers/paidplans">here</a> to renew your membership.</p>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
{% if user.rower.rowerplan == 'basic' %}
|
{% if user.rower.rowerplan == 'basic' %}
|
||||||
<li class="grid_4">
|
<li class="grid_4">
|
||||||
<p class="successmessage">
|
<p class="successmessage">
|
||||||
{{ user.rower.protrialexpires|date_dif|ddays }} days left of your Pro trial - Would you like to <a href="/rowers/promembership">upgrade now?</a>
|
{{ user.rower.protrialexpires|date_dif|ddays }} days left of your Pro trial - Would you like to <a href="/rowers/paidplans">upgrade now?</a>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -375,7 +375,7 @@
|
|||||||
<h1>Paid Plans</h1>
|
<h1>Paid Plans</h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="/rowers/promembership">Paid Plans</a>
|
<a href="/rowers/paidplans">Paid Plans</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -254,7 +254,7 @@
|
|||||||
{% if user.rower.rowerplan == 'basic' %}
|
{% if user.rower.rowerplan == 'basic' %}
|
||||||
<li class="grid_5">
|
<li class="grid_5">
|
||||||
<p class="successmessage">
|
<p class="successmessage">
|
||||||
{{ user.rower.protrialexpires|date_dif|ddays }} days left of your Pro trial - Would you like to <a href="/rowers/promembership">upgrade now?</a>
|
{{ user.rower.protrialexpires|date_dif|ddays }} days left of your Pro trial - Would you like to <a href="/rowers/paidplans">upgrade now?</a>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -347,7 +347,7 @@
|
|||||||
<h1>Paid Plans</h1>
|
<h1>Paid Plans</h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="/rowers/promembership">Paid Plans</a>
|
<a href="/rowers/paidplans">Paid Plans</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user