redirects now all to promembership
This commit is contained in:
102
rowers/views.py
102
rowers/views.py
@@ -2861,7 +2861,8 @@ def cum_flex(request,theuser=0,
|
||||
})
|
||||
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def fitnessmetric_view(request,id=0,mode='rower',
|
||||
startdate=timezone.now()-timezone.timedelta(days=365),
|
||||
enddate=timezone.now()):
|
||||
@@ -2902,7 +2903,8 @@ def fitnessmetric_view(request,id=0,mode='rower',
|
||||
|
||||
|
||||
# Show the EMpower Oarlock generated Stroke Profile
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
||||
row = get_workout(id)
|
||||
|
||||
@@ -3032,7 +3034,7 @@ def workout_histo_view(request,id=0):
|
||||
|
||||
|
||||
# Histogram for a date/time range
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def histo(request,theuser=0,
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
enddate=timezone.now(),
|
||||
@@ -4088,7 +4090,7 @@ def rankings_view2(request,theuser=0,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_update_cp_view(request,id=0):
|
||||
row = get_workout(id)
|
||||
|
||||
@@ -4114,7 +4116,7 @@ def workout_update_cp_view(request,id=0):
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Show ranking distances including predicted paces
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def otwrankings_view(request,theuser=0,
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
enddate=timezone.now(),
|
||||
@@ -4517,7 +4519,7 @@ def otwcp_toadmin_view(request,theuser=0,
|
||||
return response
|
||||
|
||||
# Show ranking distances including predicted paces
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def oterankings_view(request,theuser=0,
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
enddate=timezone.now(),
|
||||
@@ -4948,7 +4950,7 @@ def workout_setprivate_view(request,id,
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Joining workout
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workouts_join_view(request):
|
||||
promember=0
|
||||
if not request.user.is_anonymous():
|
||||
@@ -4992,7 +4994,7 @@ def workouts_join_view(request):
|
||||
url = reverse(workouts_join_select)
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workouts_join_select(request,
|
||||
startdatestring="",
|
||||
enddatestring="",
|
||||
@@ -5449,7 +5451,7 @@ def multi_compare_view(request):
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Multi Flex Chart with Grouping
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def user_multiflex_select(request,
|
||||
startdatestring="",
|
||||
enddatestring="",
|
||||
@@ -5647,7 +5649,7 @@ def user_multiflex_select(request,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def multiflex_data(request,userid=0,
|
||||
options={
|
||||
'includereststrokes':False,
|
||||
@@ -5878,7 +5880,7 @@ def multiflex_data(request,userid=0,
|
||||
})
|
||||
|
||||
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def multiflex_view(request,userid=0,
|
||||
options={
|
||||
'includereststrokes':False,
|
||||
@@ -6043,7 +6045,7 @@ def multiflex_view(request,userid=0,
|
||||
|
||||
|
||||
# Box plots
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def user_boxplot_select(request,
|
||||
startdatestring="",
|
||||
enddatestring="",
|
||||
@@ -6245,7 +6247,7 @@ def user_boxplot_select(request,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def boxplot_view_data(request,userid=0,
|
||||
options={
|
||||
'includereststrokes':False,
|
||||
@@ -6342,7 +6344,7 @@ def boxplot_view_data(request,userid=0,
|
||||
"div":div,
|
||||
})
|
||||
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def boxplot_view(request,userid=0,
|
||||
options={
|
||||
'includereststrokes':False,
|
||||
@@ -6643,7 +6645,7 @@ def workouts_view(request,message='',successmessage='',
|
||||
|
||||
|
||||
# List of workouts to compare a selected workout to
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_comparison_list(request,id=0,message='',successmessage='',
|
||||
startdatestring="",enddatestring="",
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
@@ -6723,7 +6725,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="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_fusion_list(request,id=0,message='',successmessage='',
|
||||
startdatestring="",enddatestring="",
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
@@ -6915,7 +6917,7 @@ def workout_view(request,id=0):
|
||||
|
||||
|
||||
# Resets stroke data to raw data (pace)
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_undo_smoothenpace_view(
|
||||
request,id=0,message="",successmessage=""
|
||||
):
|
||||
@@ -6952,7 +6954,7 @@ def workout_undo_smoothenpace_view(
|
||||
|
||||
|
||||
# Data smoothing of pace data
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
row = get_workout(id)
|
||||
|
||||
@@ -7001,7 +7003,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="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
||||
row = get_workout(id)
|
||||
r = getrower(request.user)
|
||||
@@ -7076,7 +7078,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="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_downloadwind_view(request,id=0,
|
||||
airportcode=None,
|
||||
message="",successmessage=""):
|
||||
@@ -7142,7 +7144,7 @@ def workout_downloadwind_view(request,id=0,
|
||||
return response
|
||||
|
||||
# Get weather for given location and date/time
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_downloadmetar_view(request,id=0,
|
||||
airportcode=None,
|
||||
message="",successmessage=""):
|
||||
@@ -7209,7 +7211,7 @@ def workout_downloadmetar_view(request,id=0,
|
||||
|
||||
|
||||
# Show form to update wind data
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_wind_view(request,id=0,message="",successmessage=""):
|
||||
row = get_workout(id)
|
||||
r = getrower(request.user)
|
||||
@@ -7345,7 +7347,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="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_stream_view(request,id=0,message="",successmessage=""):
|
||||
row = get_workout(id)
|
||||
r = getrower(request.user)
|
||||
@@ -7431,7 +7433,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="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember, login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
||||
w = get_workout(id)
|
||||
r = getrower(request.user)
|
||||
@@ -7740,7 +7742,7 @@ def instroke_chart(request,id=0,metric=''):
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Cumulative stats page
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def cumstats(request,theuser=0,
|
||||
startdate=timezone.now()-datetime.timedelta(days=30),
|
||||
enddate=timezone.now(),
|
||||
@@ -11137,7 +11139,7 @@ def workout_upload_view(request,
|
||||
|
||||
|
||||
# This is the main view for processing uploaded files
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def team_workout_upload_view(request,message="",
|
||||
successmessage="",
|
||||
uploadoptions={
|
||||
@@ -11540,7 +11542,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Split a workout
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_split_view(request,id=id):
|
||||
row = get_workout_permitted(request.user,id)
|
||||
|
||||
@@ -11631,7 +11633,7 @@ def workout_split_view(request,id=id):
|
||||
|
||||
|
||||
# Fuse two workouts
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(ispromember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def workout_fusion_view(request,id1=0,id2=1):
|
||||
|
||||
r = getrower(request.user)
|
||||
@@ -13367,7 +13369,7 @@ def rower_teams_view(request,message='',successmessage=''):
|
||||
'myinvites':myinvites,
|
||||
})
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def invitation_revoke_view(request,id):
|
||||
res,text = teams.revoke_invite(request.user,id)
|
||||
if res:
|
||||
@@ -13381,7 +13383,7 @@ def invitation_revoke_view(request,id):
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def manager_member_drop_view(request,teamid,userid,
|
||||
message='',successmessage=''):
|
||||
rower = Rower.objects.get(user__id=userid)
|
||||
@@ -13395,7 +13397,7 @@ def manager_member_drop_view(request,teamid,userid,
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def manager_requests_view(request,code=None,message='',successmessage=''):
|
||||
if code:
|
||||
res,text = teams.process_request_code(request.user,code)
|
||||
@@ -13447,7 +13449,7 @@ def request_revoke_view(request,id=0):
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def request_reject_view(request,id=0):
|
||||
res,text = teams.reject_request(request.user,id)
|
||||
|
||||
@@ -13460,7 +13462,7 @@ def request_reject_view(request,id=0):
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def invitation_reject_view(request,id=0):
|
||||
res,text = teams.reject_invitation(request.user,id)
|
||||
|
||||
@@ -13496,7 +13498,7 @@ def rower_invitations_view(request,code=None,message='',successmessage=''):
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def team_edit_view(request,id=0):
|
||||
try:
|
||||
t = Team.objects.get(id=id)
|
||||
@@ -13560,7 +13562,7 @@ def team_edit_view(request,id=0):
|
||||
'team':t,
|
||||
})
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def team_create_view(request):
|
||||
if request.method == 'POST':
|
||||
teamcreateform = TeamForm(request.POST)
|
||||
@@ -13603,7 +13605,7 @@ def team_create_view(request):
|
||||
'breadcrumbs':breadcrumbs,
|
||||
})
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def team_deleteconfirm_view(request,id):
|
||||
r = getrower(request.user)
|
||||
try:
|
||||
@@ -13639,7 +13641,7 @@ def team_deleteconfirm_view(request,id):
|
||||
'active':'nav-teams',
|
||||
})
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def team_delete_view(request,id):
|
||||
r = getrower(request.user)
|
||||
try:
|
||||
@@ -13655,7 +13657,7 @@ def team_delete_view(request,id):
|
||||
response = HttpResponseRedirect(url)
|
||||
return response
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership",redirect_field_name=None)
|
||||
def team_members_stats_view(request,id):
|
||||
r = getrower(request.user)
|
||||
try:
|
||||
@@ -13752,7 +13754,7 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt',
|
||||
})
|
||||
|
||||
# Cloning sessions
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/",
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_multiclone_view(
|
||||
request,
|
||||
@@ -13864,7 +13866,7 @@ def plannedsession_multiclone_view(
|
||||
)
|
||||
|
||||
# Individual user creates training for himself
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/",
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_create_view(request,
|
||||
userid=0):
|
||||
@@ -13997,7 +13999,7 @@ def plannedsession_create_view(request,
|
||||
'timeperiod':timeperiod,
|
||||
})
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/",
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_multicreate_view(request,
|
||||
teamid=0,userid=0,extrasessions=0):
|
||||
@@ -14112,7 +14114,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/planmembership/",
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_teamcreate_view(request,
|
||||
teamid=0,userid=0):
|
||||
@@ -14226,7 +14228,7 @@ def plannedsession_teamcreate_view(request,
|
||||
})
|
||||
|
||||
# Manager edits sessions for entire team
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/planmembership/",
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_teamedit_view(request,
|
||||
sessionid=0,userid=0):
|
||||
@@ -14362,7 +14364,7 @@ def plannedsession_teamedit_view(request,
|
||||
'plannedsessions':sps,
|
||||
})
|
||||
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/planmembership/",
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsessions_coach_view(request,
|
||||
teamid=0,userid=0):
|
||||
@@ -14706,7 +14708,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/planmembership/",
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_clone_view(request,id=0,userid=0):
|
||||
|
||||
@@ -14769,7 +14771,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
|
||||
|
||||
|
||||
# Edit an existing planned session
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/",
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_edit_view(request,id=0,userid=0):
|
||||
|
||||
@@ -15906,7 +15908,7 @@ def virtualevent_submit_result_view(request,id=0):
|
||||
'w_form':w_form,
|
||||
})
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None)
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership", redirect_field_name=None)
|
||||
def rower_create_trainingplan(request,userid=0):
|
||||
|
||||
therower = getrequestrower(request,userid=userid)
|
||||
@@ -15977,7 +15979,7 @@ def rower_create_trainingplan(request,userid=0):
|
||||
'targetform':targetform,
|
||||
})
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None)
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership", redirect_field_name=None)
|
||||
def rower_delete_trainingtarget(request,id=0):
|
||||
try:
|
||||
target = TrainingTarget.objects.get(id=id)
|
||||
@@ -15995,7 +15997,7 @@ def rower_delete_trainingtarget(request,id=0):
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None)
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership", redirect_field_name=None)
|
||||
def rower_delete_trainingplan(request,id=0):
|
||||
try:
|
||||
plan = TrainingPlan.objects.get(id=id)
|
||||
@@ -16304,7 +16306,7 @@ class MacroCycleDelete(DeleteView):
|
||||
return obj
|
||||
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/", redirect_field_name=None)
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership", redirect_field_name=None)
|
||||
def rower_trainingplan_view(request,
|
||||
id=0,
|
||||
userid=0,
|
||||
|
||||
Reference in New Issue
Block a user