diff --git a/rowers/templates/403.html b/rowers/templates/403.html
index fb4654ac..5a17218e 100644
--- a/rowers/templates/403.html
+++ b/rowers/templates/403.html
@@ -9,7 +9,8 @@
Forbidden
- Access forbidden. You probably tried to access functionality on a workout
+ Access forbidden. You probably tried to access functionality on a workout,
+ planned session
or chart that is not owned by you.
diff --git a/rowers/views.py b/rowers/views.py
index 64faceb5..32cf2fb6 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -518,7 +518,7 @@ def get_thumbnails(request,id):
except Workout.DoesNotExist:
raise Http404("Workout doesn't exist")
if (checkworkoutuser(request.user,row)==False):
- raise Http404("You are not allowed to edit this workout")
+ raise PermissionDenied("Access denied")
r = getrower(request.user)
result = request.user.is_authenticated() and ispromember(request.user)
@@ -562,7 +562,7 @@ def get_testscript(request,id):
except Workout.DoesNotExist:
raise Http404("Workout doesn't exist")
if (checkworkoutuser(request.user,row)==False):
- raise Http404("You are not allowed to edit this workout")
+ raise PermissionDenied("Access denied")
r = getrower(request.user)
@@ -4931,7 +4931,7 @@ def workouts_join_select(request,
theteam = 0
if r.rowerplan == 'basic' and theteam==0:
- raise Http404("Not allowed")
+ raise PermissionDenied("Access denied")
if theteam and (theteam.viewing == 'allmembers' or theteam.manager == request.user):
workouts = Workout.objects.filter(team=theteam,
@@ -5091,7 +5091,7 @@ def team_comparison_select(request,
if r.rowerplan == 'basic' and theteam==0:
if r.protrialexpires is None or r.protrialexpires1:
url = reverse(plannedsession_teamedit_view,
@@ -12330,8 +12330,8 @@ def plannedsession_view(request,id=0,rowerid=0):
raise Http404("Planned Session does not exist")
- if ps.manager != request.user:
- raise Http404("You are not allowed to delete this planned session")
+ if ps.manager != request.user and r not in ps.rower.all():
+ raise PermissionDenied("You do not have access to this session")
psdict = my_dict_from_instance(ps,PlannedSession)
@@ -12368,7 +12368,7 @@ def plannedsession_delete_view(request,id=0):
if ps.manager != request.user:
- raise Http404("You are not allowed to delete this planned session")
+ raise PermissionDenied("You are not allowed to delete this planned session")
ws = Workout.objects.filter(plannedsession=ps)
for w in ws:
@@ -12393,7 +12393,7 @@ def plannedsession_deleteconfirm_view(request,id=0):
if ps.manager != request.user:
- raise Http404("You are not allowed to delete this planned session")
+ raise PermissionDenied("You are not allowed to delete this planned session")
psdict = my_dict_from_instance(ps,PlannedSession)