Private
Public Access
1
0

changed links to paidplans

was promembership
This commit is contained in:
Sander Roosendaal
2019-01-04 09:14:14 +01:00
parent 121abe623c
commit 50928cba32
13 changed files with 106 additions and 106 deletions

View File

@@ -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:
<ul>
<li><a href="/rowers/promembership">Pro Membership</a>,
<li><a href="/rowers/paidplans">Pro Membership</a>,
offering additional rowing metrics and analysis
tools for individual rowers.</li>
<li><a href="/rowers/planmembership">Self-Coach Membership</a>,

View File

@@ -16,7 +16,7 @@
<h1>{{ workout.name }} - Advanced</h1>
{% if user.rower.rowerplan == 'basic' %}
<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>
{% endif %}
</div>
@@ -62,7 +62,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/compare/{{ workout.id }}">Compare Workouts</a>
{% else %}
<a class="button blue small" href="/rowers/promembership/">Compare Workouts*</a>
<a class="button blue small" href="/rowers/paidplans/">Compare Workouts*</a>
{% endif %}
<p>
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 %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/editintervals">Edit Intervals</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Edit Intervals*</a>
<a class="button blue small" href="/rowers/paidplans">Edit Intervals*</a>
{% endif %}
</p>
<span class="tooltiptext">Enter or change the interval and summary data for your workout</span>
@@ -98,7 +98,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/adddistanceplot2">Dist Metrics Plot</a>
{% 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 %}
</p>
<p>
@@ -110,7 +110,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/addtimeplot2">Time Metrics Plot</a>
{% 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 %}
</p>
<p>
@@ -122,7 +122,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/histo">Power Histogram</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Power Histogram*</a>
<a class="button blue small" href="/rowers/paidplans">Power Histogram*</a>
{% endif %}
</p>
<p>
@@ -136,7 +136,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workouts-join-select">Glue</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Glue*</a>
<a class="button blue small" href="/rowers/paidplans">Glue*</a>
{% endif %}
</p>
<p>
@@ -149,7 +149,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/fusion/{{ workout.id }}/">Sensor Fusion</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Sensor Fusion*</a>
<a class="button blue small" href="/rowers/paidplans">Sensor Fusion*</a>
{% endif %}
</p>
<p>
@@ -161,7 +161,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/split">Split Workout</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Split Workout*</a>
<a class="button blue small" href="/rowers/paidplans">Split Workout*</a>
{% endif %}
</p>
<p>

View File

@@ -16,7 +16,7 @@
<h1>{{ workout.name }} - Advanced OTW</h1>
{% if user.rower.rowerplan == 'basic' %}
<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>
{% endif %}
<div class="grid_2 alpha">
@@ -60,7 +60,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/compare/{{ workout.id }}">Compare Workouts</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Compare Workouts*</a>
<a class="button blue small" href="/rowers/paidplans">Compare Workouts*</a>
{% endif %}
</p>
<p>
@@ -82,7 +82,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/editintervals">Edit Intervals</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Edit Intervals*</a>
<a class="button blue small" href="/rowers/paidplans">Edit Intervals*</a>
{% endif %}
</p>
<span class="tooltiptext">Enter or change the interval and summary data for your workout</span>
@@ -99,7 +99,7 @@
{% if user|is_promember %}
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/crewnerdsummary">CrewNerd Summary</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">CrewNerd Summary*</a>
<a class="button blue small" href="/rowers/paidplans">CrewNerd Summary*</a>
{% endif %}
</p>
@@ -113,7 +113,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/forcecurve">Stroke Profile (Empower)</a>
{% 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 %}
</p>
<span class="tooltiptext">Analyze your stroke force profile (need Empower Oarlock data)</span> <p>
@@ -126,7 +126,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/addotwpowerplot">OTW Power Plot</a>
{% 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 %}
</p>
<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 %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/geeky">Geeky Stuff</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Geeky Stuff*</a>
<a class="button blue small" href="/rowers/paidplans">Geeky Stuff*</a>
{% endif %}
</p>
@@ -161,7 +161,7 @@
{% if user|is_promember %}
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/smoothenpace">Smooth out Pace Data</a>
{% 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 %}
</p>
@@ -178,7 +178,7 @@
{% if user|is_promember %}
<a class="button blue small"href="/rowers/workout/{{ workout.id }}/undosmoothenpace">Raw Data</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Reset Smoothing*</a>
<a class="button blue small" href="/rowers/paidplans">Reset Smoothing*</a>
{% endif %}
</p>
<p>
@@ -193,7 +193,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workouts-join-select">Glue</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Glue*</a>
<a class="button blue small" href="/rowers/paidplans">Glue*</a>
{% endif %}
</p>
<p>
@@ -205,7 +205,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/fusion/{{ workout.id }}/">Sensor Fusion</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Sensor Fusion*</a>
<a class="button blue small" href="/rowers/paidplans">Sensor Fusion*</a>
{% endif %}
</p>
<p>
@@ -217,7 +217,7 @@
{% if user|is_promember %}
<a class="button blue small" href="/rowers/workout/{{ workout.id }}/split">Split Workout</a>
{% else %}
<a class="button blue small" href="/rowers/promembership">Split Workout*</a>
<a class="button blue small" href="/rowers/paidplans">Split Workout*</a>
{% endif %}
</p>
<p>

View File

@@ -98,7 +98,7 @@
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
<h6 class="graytext">Pro Member</h6>
{% 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 %}
</div>
</div>

View File

@@ -74,7 +74,7 @@
{% endfor %}
{% else %}
{% 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 %}
{% endif %}
</div>
@@ -98,7 +98,7 @@
{% else %}
{% for key, value in axchoicespro.items %}
{% 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 %}
{% endfor %}
{% endif %}

View File

@@ -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/drivespeed/{{ yparam1 }}/{{ yparam2 }}/scatter">Drive Speed</a>
{% else %}
<a class="button rosy small" href="/rowers/promembership">Power (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">HR (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">SPM (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Peak Force (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Average Force (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Drive Length (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">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">Power (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">HR (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">SPM (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Peak Force (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Average Force (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Drive Length (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Work per Stroke (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Drive Speed (Pro)</a>
{% endif %}
</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 }}/drivespeed/{{ yparam2 }}/{{ plottype }}">Drive Speed</a>
{% else %}
<a class="button rosy small" href="/rowers/promembership">Peak Force (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Average Force (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Drive Length (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">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">Peak Force (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Average Force (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Drive Length (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Work per Stroke (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Drive Speed (Pro)</a>
{% endif %}
</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 }}/drivespeed/{{ plottype }}">Drive Speed</a>
{% else %}
<a class="button rosy small" href="/rowers/promembership">Peak Force (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Average Force (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">Drive Length (Pro)</a>
<a class="button rosy small" href="/rowers/promembership">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">Peak Force (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Average Force (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Drive Length (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Work per Stroke (Pro)</a>
<a class="button rosy small" href="/rowers/paidplans">Drive Speed (Pro)</a>
{% endif %}
<a class="button blue small" href="/rowers/workout/{{ id }}/flexchart/{{ xparam }}/{{ yparam1 }}/None/{{ plottype }}">None</a>

View File

@@ -115,7 +115,7 @@
to the partner site</p>
<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">
<form id="importexportform" method="post">

View File

@@ -25,7 +25,7 @@
{% if user|is_promember %}
<a href="/rowers/workouts-join-select">
{% else %}
<a href="/rowers/promembership">
<a href="/rowers/paidplans">
{% endif %}
<i class="fas fa-layer-plus fa-fw"></i>&nbsp;Glue Workouts
</a>

View File

@@ -90,7 +90,7 @@
<p>Missing your best pieces? Upload stroke data of any Concept2
ranking piece and they will be automatically added to this page.</p>
<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
parts of workouts for improved calculation accuracy.
</p>

View File

@@ -39,7 +39,7 @@
If you find it to be useful, please help us cover
our hosting costs and gain access to additional functionality
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>

View File

@@ -1647,7 +1647,7 @@ def start_trial_view(request):
if r.protrialexpires is not None:
messages.error(request,'You do not qualify for a trial')
url = '/rowers/promembership'
url = '/rowers/paidplans'
return HttpResponseRedirect(url)
r.protrialexpires = datetime.date.today()+datetime.timedelta(13)
@@ -1674,7 +1674,7 @@ def start_plantrial_view(request):
if r.plantrialexpires is not None:
messages.error(request,'You do not qualify for a trial')
url = '/rowers/promembership'
url = '/rowers/paidplans'
return HttpResponseRedirect(url)
r.plantrialexpires = datetime.date.today()+datetime.timedelta(13)
@@ -3512,7 +3512,7 @@ def planrequired_view(request):
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",
redirect_field_name=None)
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
@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",
redirect_field_name=None)
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
@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",
redirect_field_name=None)
def histo(request,theuser=0,
@@ -4802,7 +4802,7 @@ def rankings_view2(request,theuser=0,
'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",
redirect_field_name=None)
def workout_update_cp_view(request,id=0):
@@ -4830,7 +4830,7 @@ def workout_update_cp_view(request,id=0):
return HttpResponseRedirect(url)
# 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",
redirect_field_name=None)
def otwrankings_view(request,theuser=0,
@@ -5235,7 +5235,7 @@ def otwcp_toadmin_view(request,theuser=0,
return response
# 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",
redirect_field_name=None)
def oterankings_view(request,theuser=0,
@@ -5677,7 +5677,7 @@ def workout_setprivate_view(request,id,
return HttpResponseRedirect(url)
# 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",
redirect_field_name=None)
def workouts_join_view(request):
@@ -5723,7 +5723,7 @@ def workouts_join_view(request):
url = reverse(workouts_join_select)
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",
redirect_field_name=None)
def workouts_join_select(request,
@@ -6431,7 +6431,7 @@ def multi_compare_view(request,id=0,userid=0):
# 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",
redirect_field_name=None)
def user_multiflex_select(request,
@@ -6637,7 +6637,7 @@ def user_multiflex_select(request,
'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",
redirect_field_name=None)
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",
redirect_field_name=None)
def multiflex_view(request,userid=0,
@@ -7050,7 +7050,7 @@ def multiflex_view(request,userid=0,
# 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",
redirect_field_name=None)
def user_boxplot_select(request,
@@ -7258,7 +7258,7 @@ def user_boxplot_select(request,
'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",
redirect_field_name=None)
def boxplot_view_data(request,userid=0,
@@ -7365,7 +7365,7 @@ def boxplot_view_data(request,userid=0,
"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",
redirect_field_name=None)
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
@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",
redirect_field_name=None)
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
@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",
redirect_field_name=None)
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)
@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",
redirect_field_name=None)
def workout_undo_smoothenpace_view(
@@ -8050,7 +8050,7 @@ def workout_undo_smoothenpace_view(
# 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",
redirect_field_name=None)
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)
# 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",
redirect_field_name=None)
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})
# 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",
redirect_field_name=None)
def workout_downloadwind_view(request,id=0,
@@ -8248,7 +8248,7 @@ def workout_downloadwind_view(request,id=0,
return response
# 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,
airportcode=None,
message="",successmessage=""):
@@ -8315,7 +8315,7 @@ def workout_downloadmetar_view(request,id=0,
# 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=""):
row = get_workout(id)
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)
@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=""):
row = get_workout(id)
r = getrower(request.user)
@@ -8537,7 +8537,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
'the_div':div})
# 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=""):
w = get_workout(id)
r = getrower(request.user)
@@ -8846,7 +8846,7 @@ def instroke_chart(request,id=0,metric=''):
return HttpResponseRedirect(url)
# 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,
startdate=timezone.now()-datetime.timedelta(days=30),
enddate=timezone.now(),
@@ -12484,7 +12484,7 @@ def workout_upload_view(request,
# 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="",
successmessage="",
uploadoptions={
@@ -12891,7 +12891,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
return HttpResponseRedirect(url)
# 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):
row = get_workout_permitted(request.user,id)
@@ -12982,7 +12982,7 @@ def workout_split_view(request,id=id):
# 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):
r = getrower(request.user)
@@ -14727,7 +14727,7 @@ def rower_teams_view(request,message='',successmessage=''):
'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):
res,text = teams.revoke_invite(request.user,id)
if res:
@@ -14741,7 +14741,7 @@ def invitation_revoke_view(request,id):
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,
message='',successmessage=''):
rower = Rower.objects.get(user__id=userid)
@@ -14755,7 +14755,7 @@ def manager_member_drop_view(request,teamid,userid,
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=''):
if code:
res,text = teams.process_request_code(request.user,code)
@@ -14807,7 +14807,7 @@ def request_revoke_view(request,id=0):
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):
res,text = teams.reject_request(request.user,id)
@@ -14820,7 +14820,7 @@ def request_reject_view(request,id=0):
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):
res,text = teams.reject_invitation(request.user,id)
@@ -14856,7 +14856,7 @@ def rower_invitations_view(request,code=None,message='',successmessage=''):
})
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):
try:
t = Team.objects.get(id=id)
@@ -14920,7 +14920,7 @@ def team_edit_view(request,id=0):
'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):
if request.method == 'POST':
teamcreateform = TeamForm(request.POST)
@@ -14963,7 +14963,7 @@ def team_create_view(request):
'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):
r = getrower(request.user)
try:
@@ -14999,7 +14999,7 @@ def team_deleteconfirm_view(request,id):
'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):
r = getrower(request.user)
try:
@@ -15015,7 +15015,7 @@ def team_delete_view(request,id):
response = HttpResponseRedirect(url)
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):
r = getrower(request.user)
try:
@@ -15112,7 +15112,7 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt',
})
# 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",
redirect_field_name=None)
def plannedsession_multiclone_view(
@@ -15242,7 +15242,7 @@ def plannedsession_multiclone_view(
)
# 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",
redirect_field_name=None)
def plannedsession_create_view(request,
@@ -15379,7 +15379,7 @@ def plannedsession_create_view(request,
'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",
redirect_field_name=None)
def plannedsession_multicreate_view(request,
@@ -15492,7 +15492,7 @@ def plannedsession_multicreate_view(request,
return render(request,'plannedsession_multicreate.html',context)
# 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)
def plannedsession_teamcreate_view(request,
teamid=0,userid=0):
@@ -15659,7 +15659,7 @@ def plannedsession_teamcreate_view(request,
})
# 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)
def plannedsession_teamedit_view(request,
sessionid=0,userid=0):
@@ -15815,7 +15815,7 @@ def plannedsession_teamedit_view(request,
'plannedsessions':sps,
})
#@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
#@user_passes_test(iscoachmember,login_url="/rowers/paidplans/",
# redirect_field_name=None)
@login_required()
def plannedsessions_coach_view(request,
@@ -16264,7 +16264,7 @@ def plannedsessions_manage_view(request,userid=0,
# Clone an existing planned session
# 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",
redirect_field_name=None)
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
@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",
redirect_field_name=None)
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,
})
@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",
redirect_field_name=None)
def rower_create_trainingplan(request,userid=0):
@@ -18468,7 +18468,7 @@ def rower_create_trainingplan(request,userid=0):
'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",
redirect_field_name=None)
def rower_delete_trainingtarget(request,id=0):
@@ -18488,7 +18488,7 @@ def rower_delete_trainingtarget(request,id=0):
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",
redirect_field_name=None)
def rower_delete_trainingplan(request,id=0):
@@ -18801,7 +18801,7 @@ class MacroCycleDelete(DeleteView):
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",
redirect_field_name=None)
def rower_trainingplan_view(request,
@@ -19320,7 +19320,7 @@ def allsundays(startdate,enddate):
yield d
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",
redirect_field_name=None)
def planmesocyclebyweek(request,id=0,userid=0):
@@ -19381,7 +19381,7 @@ def allmonths(startdate,enddate):
yield d
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",
redirect_field_name=None)
def planmacrocyclebymonth(request,id=0,userid=0):