Merge tag 'deleteconfirm' into develop
raise error404 in a few places
This commit is contained in:
208
rowers/views.py
208
rowers/views.py
@@ -9,7 +9,7 @@ from django.shortcuts import render
|
||||
from django.http import (
|
||||
HttpResponse, HttpResponseRedirect,
|
||||
HttpResponseForbidden, HttpResponseNotAllowed,
|
||||
HttpResponseNotFound,
|
||||
HttpResponseNotFound,Http404
|
||||
)
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from rowers.forms import LoginForm,DocumentsForm,UploadOptionsForm
|
||||
@@ -377,7 +377,10 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||
dist2 = 0.1*strokedata.ix[:,'d']
|
||||
|
||||
spm = strokedata.ix[:,'spm']
|
||||
hr = strokedata.ix[:,'hr']
|
||||
try:
|
||||
hr = strokedata.ix[:,'hr']
|
||||
except KeyError:
|
||||
hr = 0*spm
|
||||
pace = strokedata.ix[:,'p']/10.
|
||||
pace = np.clip(pace,0,1e4)
|
||||
pace = pace.replace(0,300)
|
||||
@@ -673,7 +676,10 @@ def workout_tcxemail_view(request,id=0):
|
||||
message = ""
|
||||
successmessage = ""
|
||||
r = Rower.objects.get(user=request.user)
|
||||
w = Workout.objects.get(id=id)
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
try:
|
||||
tcxfile = stravastuff.createstravaworkoutdata(w)
|
||||
@@ -725,7 +731,10 @@ def workout_tcxemail_view(request,id=0):
|
||||
def workout_csvemail_view(request,id=0):
|
||||
message = ""
|
||||
r = Rower.objects.get(user=request.user)
|
||||
w = Workout.objects.get(id=id)
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
csvfile = w.csvfilename
|
||||
if settings.DEBUG:
|
||||
@@ -769,7 +778,10 @@ def workout_strava_upload_view(request,id=0):
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
else:
|
||||
# ready to upload. Hurray
|
||||
w = Workout.objects.get(id=id)
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
try:
|
||||
tcxfile = stravastuff.createstravaworkoutdata(w)
|
||||
@@ -862,9 +874,15 @@ def workout_c2_upload_view(request,id=0):
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
|
||||
# ready to upload. Hurray
|
||||
w = Workout.objects.get(id=id)
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
c2userid = c2stuff.get_userid(thetoken)
|
||||
if not c2userid:
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize")
|
||||
|
||||
data = c2stuff.createc2workoutdata(w)
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
@@ -931,7 +949,11 @@ def workout_sporttracks_upload_view(request,id=0):
|
||||
return HttpResponseRedirect("/rowers/me/sporttracksauthorize/")
|
||||
|
||||
# ready to upload. Hurray
|
||||
w = Workout.objects.get(id=id)
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
data = sporttracksstuff.createsporttracksworkoutdata(w)
|
||||
if not data:
|
||||
@@ -1355,7 +1377,11 @@ def cum_flex(request,theuser=0,
|
||||
# Show the EMpower Oarlock generated Stroke Profile
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
||||
row = Workout.objects.get(id=id)
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
promember=0
|
||||
mayedit=0
|
||||
if not request.user.is_anonymous():
|
||||
@@ -1394,7 +1420,11 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
||||
# Show Stroke power histogram for a workout
|
||||
@login_required()
|
||||
def workout_histo_view(request,id=0):
|
||||
row = Workout.objects.get(id=id)
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
promember=0
|
||||
mayedit=0
|
||||
if not request.user.is_anonymous():
|
||||
@@ -1830,7 +1860,11 @@ def rankings_view(request,theuser=0,
|
||||
# Reload the workout and calculate the summary from the stroke data (lapIDx)
|
||||
@login_required()
|
||||
def workout_recalcsummary_view(request,id=0):
|
||||
row = Workout.objects.get(id=id)
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
url = reverse(workouts_view,args=[str(message)])
|
||||
@@ -1963,7 +1997,7 @@ def workout_comparison_list(request,id=0,message='',successmessage='',
|
||||
s = enddate
|
||||
enddate = startdate
|
||||
startdate = s
|
||||
|
||||
|
||||
workouts = Workout.objects.filter(user=r,
|
||||
startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate).order_by("-date", "-starttime").exclude(id=id)
|
||||
@@ -1987,8 +2021,11 @@ def workout_comparison_list(request,id=0,message='',successmessage='',
|
||||
workouts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
workouts = paginator.page(paginator.num_pages)
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
row = Workout.objects.get(id=id)
|
||||
|
||||
return render(request, 'comparison_list.html',
|
||||
{'id':id,
|
||||
@@ -2042,12 +2079,16 @@ def workout_view(request,id=0):
|
||||
'the_div':div})
|
||||
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# Resets stroke data to raw data (pace)
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_undo_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
def workout_undo_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
@@ -2074,7 +2115,11 @@ def workout_undo_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# Data smoothing of pace data
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
@@ -2110,7 +2155,11 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# Process CrewNerd Summary CSV and update summary
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
||||
def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if request.method == 'POST':
|
||||
form = CNsummaryForm(request.POST,request.FILES)
|
||||
@@ -2155,7 +2204,11 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# Get weather for given location and date/time
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_downloadwind_view(request,id=0,message="",successmessage=""):
|
||||
def workout_downloadwind_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
f1 = row.csvfilename
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
@@ -2212,7 +2265,11 @@ def workout_downloadwind_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# Show form to update wind data
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_wind_view(request,id=0,message="",successmessage=""):
|
||||
def workout_wind_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
@@ -2312,7 +2369,11 @@ 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)
|
||||
def workout_stream_view(request,id=0,message="",successmessage=""):
|
||||
def workout_stream_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
@@ -2374,7 +2435,11 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# Form to set average crew weight and boat type, then run power calcs
|
||||
@user_passes_test(ispromember, login_url="/",redirect_field_name=None)
|
||||
def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
||||
def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
@@ -2460,7 +2525,11 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# A special Edit page with all the Geeky functionality for the workout
|
||||
@login_required()
|
||||
def workout_geeky_view(request,id=0,message="",successmessage=""):
|
||||
def workout_geeky_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
form = WorkoutForm(instance=row)
|
||||
g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime")
|
||||
@@ -2774,7 +2843,10 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# The Advanced edit page
|
||||
@login_required()
|
||||
def workout_advanced_view(request,id=0,message="",successmessage=""):
|
||||
def workout_advanced_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
form = WorkoutForm(instance=row)
|
||||
g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime")
|
||||
@@ -2890,8 +2962,11 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
||||
except:
|
||||
favoritenr = 0
|
||||
|
||||
|
||||
|
||||
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
promember=0
|
||||
mayedit=0
|
||||
@@ -3038,7 +3113,11 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
||||
|
||||
|
||||
# The interactive plot with the colored Heart rate zones
|
||||
def workout_biginteractive_view(request,id=0,message="",successmessage=""):
|
||||
def workout_biginteractive_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# check if user is owner of this workout
|
||||
|
||||
@@ -3075,7 +3154,11 @@ def workout_biginteractive_view(request,id=0,message="",successmessage=""):
|
||||
'mayedit':mayedit})
|
||||
|
||||
# The interactive plot with wind corrected pace for OTW outings
|
||||
def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
||||
def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# check if user is owner of this workout
|
||||
|
||||
@@ -3113,8 +3196,11 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
||||
# the page where you can chose where to export this workout
|
||||
@login_required()
|
||||
def workout_export_view(request,id=0, message="", successmessage=""):
|
||||
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
|
||||
try:
|
||||
row = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
|
||||
form = WorkoutForm(instance=row)
|
||||
g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime")
|
||||
@@ -3292,7 +3378,11 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
# Create the chart image with wind corrected pace (OTW)
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_add_otw_powerplot_view(request,id):
|
||||
def workout_add_otw_powerplot_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3345,7 +3435,11 @@ def workout_add_otw_powerplot_view(request,id):
|
||||
|
||||
# Create the Heart rate zone pie chart
|
||||
@login_required()
|
||||
def workout_add_piechart_view(request,id):
|
||||
def workout_add_piechart_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3399,7 +3493,11 @@ def workout_add_piechart_view(request,id):
|
||||
|
||||
# Create the Power zone pie chart
|
||||
@login_required()
|
||||
def workout_add_power_piechart_view(request,id):
|
||||
def workout_add_power_piechart_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3451,7 +3549,11 @@ def workout_add_power_piechart_view(request,id):
|
||||
|
||||
# Create the time based summary chart
|
||||
@login_required()
|
||||
def workout_add_timeplot_view(request,id):
|
||||
def workout_add_timeplot_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3504,7 +3606,11 @@ def workout_add_timeplot_view(request,id):
|
||||
|
||||
# Create the distance based summary chart
|
||||
@login_required()
|
||||
def workout_add_distanceplot_view(request,id):
|
||||
def workout_add_distanceplot_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3555,7 +3661,11 @@ def workout_add_distanceplot_view(request,id):
|
||||
|
||||
# Create the advanced parameters distance overview chart
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_add_distanceplot2_view(request,id):
|
||||
def workout_add_distanceplot2_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3608,7 +3718,11 @@ def workout_add_distanceplot2_view(request,id):
|
||||
|
||||
# Create the advanced parameters time based overview chart
|
||||
@user_passes_test(ispromember,login_url="/",redirect_field_name=None)
|
||||
def workout_add_timeplot2_view(request,id):
|
||||
def workout_add_timeplot2_view(request,id):
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
if (checkworkoutuser(request.user,w)==False):
|
||||
return HttpResponse("You are not allowed add plots to this workout")
|
||||
@@ -3817,7 +3931,11 @@ def workout_getstravaworkout_view(request,stravaid):
|
||||
strokedata = res[1]
|
||||
data = res[0]
|
||||
id,message = add_workout_from_strokedata(request.user,stravaid,data,strokedata,
|
||||
source='strava')
|
||||
source='strava')
|
||||
try:
|
||||
w = Workout.objects.get(id=id)
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
w.uploadedtostrava=stravaid
|
||||
w.save()
|
||||
@@ -4150,7 +4268,7 @@ def workout_delete_confirm_view(request, id=0):
|
||||
{'id':id,
|
||||
'workout':row})
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# Really deleting the workout
|
||||
@@ -4170,7 +4288,7 @@ def workout_delete_view(request,id=0):
|
||||
)
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
# Ask the user to confirm that he wants to delete a chart
|
||||
@@ -4186,7 +4304,9 @@ def graph_delete_confirm_view(request, id=0):
|
||||
{'id':id,
|
||||
'graph':img})
|
||||
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
except GraphImage.DoesNotExist:
|
||||
raise Http404("The image doesn't exist")
|
||||
|
||||
# Really deleting the chart
|
||||
@@ -4207,7 +4327,7 @@ def graph_delete_view(request,id=0):
|
||||
)
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
except GraphImage.DoesNotExist:
|
||||
except GraphImage.DoesNotExist:
|
||||
raise Http404("Graph Image doesn't exist")
|
||||
|
||||
|
||||
@@ -4250,7 +4370,9 @@ def graph_show_view(request,id):
|
||||
'workout':w,
|
||||
'rower':r,})
|
||||
|
||||
except GraphImage.DoesNotExist:
|
||||
except GraphImage.DoesNotExist:
|
||||
raise Http404("This graph doesn't exist")
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("This workout doesn't exist")
|
||||
|
||||
# Restore original stroke data and summary
|
||||
@@ -4260,7 +4382,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
|
||||
row = Workout.objects.get(id=id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
return HttpResponse("You are not allowed to edit this workout")
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
s = ""
|
||||
@@ -4315,7 +4437,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
||||
row = Workout.objects.get(id=id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
return HttpResponse("You are not allowed to edit this workout")
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
|
||||
s = ""
|
||||
@@ -4893,7 +5015,7 @@ def strokedatajson(request,id):
|
||||
row = Workout.objects.get(id=id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
return HttpResponseForbidden("Permission error")
|
||||
except Workout.DoesNotExist:
|
||||
except Workout.DoesNotExist:
|
||||
raise Http404("Workout doesn't exist")
|
||||
try:
|
||||
id = int(id)
|
||||
|
||||
Reference in New Issue
Block a user