Private
Public Access
1
0

fixing export error

This commit is contained in:
2024-12-29 14:33:18 +01:00
parent 3a7b51a8d8
commit 4fda5a04cb
4 changed files with 22 additions and 5 deletions

View File

@@ -440,6 +440,18 @@ WORKOUT permissions
# check if user is owner or coach of owner of workout
@rules.predicate
def is_workout_owner(user, workout):
if user.is_anonymous:
return False
try:
r = user.rower
except AttributeError: # pragma: no cover
return False
return workout.user.user == user
@rules.predicate
def is_workout_user(user, workout):
@@ -507,7 +519,7 @@ can_change_workout = is_workout_user
rules.add_perm('workout.change_workout', can_change_workout)
# replaces checkworkoutuserview
rules.add_perm('workout.view_workout', can_view_workout)
rules.add_perm('workout.is_owner', is_workout_owner)
# checkviewworkouts

View File

@@ -39,10 +39,15 @@ def default(o): # pragma: no cover
raise TypeError
@login_required()
@permission_required('workout.is_workout_owner', fn=get_user_by_userid, raise_exception=True)
def workout_export_view(request, id=0, source='c2'):
r = getrower(request.user)
r = getrequestrower(request)
w = get_workout_by_opaqueid(request, id)
integration = importsources[source](request.user)
if w.user != request.user:
messages.error(request, 'You can only export your own workouts')
url = reverse('workouts_view')
return HttpResponseRedirect(url)
integration = importsources[source](r.user)
try:
id = integration.workout_export(w)
except NoTokenError: # pragma: no cover

View File

@@ -83,7 +83,7 @@ from rowers.rower_rules import (
can_start_trial, can_start_plantrial, can_start_coachtrial,
can_plan, is_workout_team,
is_promember,user_is_basic, is_coachtrial, is_coach,
workout_is_strava
workout_is_strava, is_workout_owner
)
from django.shortcuts import render

View File

@@ -2068,7 +2068,7 @@ def workouts_bulk_actions(request):
if exportchoice.is_valid():
destination = exportchoice.cleaned_data['destination']
for w in workouts:
integration = importsources[destination](request.user)
integration = importsources[destination](r.user)
try:
id = integration.workout_export(w)
messages.info(request,