Private
Public Access
1
0

Merge branch 'release/v20.5.1'

This commit is contained in:
2024-02-09 08:37:37 +01:00
3 changed files with 22 additions and 8 deletions
+2
View File
@@ -3600,6 +3600,8 @@ class Workout(models.Model):
) )
except ValueError: except ValueError:
stri = self.name stri = self.name
except AttributeError:
return "No workout"
else: else:
try: try:
stri = u'{d} {n} {dist}m {duration} {workouttype} {boattype} {ownerfirst} {ownerlast}'.format( stri = u'{d} {n} {dist}m {duration} {workouttype} {boattype} {ownerfirst} {ownerlast}'.format(
Binary file not shown.
+18 -6
View File
@@ -2039,14 +2039,17 @@ def workouts_setrpe_view(request,userid=0):
@login_required() @login_required()
def workouts_bulk_actions(request): def workouts_bulk_actions(request):
r = getrower(request.user) r = getrower(request.user)
action = request.session['action'] action = request.session.get('action','export')
workoutids = request.session['ids'] workoutids = request.session.get('ids',[])
workouts = [] workouts = []
exportchoice = 'strava'
try: try:
for encid in workoutids: for encid in workoutids:
w = get_workout_by_opaqueid(request, encid) w = get_workout_by_opaqueid(request, encid)
if w.user == r: if w.user == r:
workouts.append(w) workouts.append(w)
else:
messages.error(request,'Bulk actions are not accessible to coaches')
except KeyError: except KeyError:
pass pass
@@ -2055,6 +2058,9 @@ def workouts_bulk_actions(request):
form = WorkoutMultipleCompareForm(request.POST) form = WorkoutMultipleCompareForm(request.POST)
if form.is_valid() and actionform.is_valid(): if form.is_valid() and actionform.is_valid():
workouts = form.cleaned_data['workouts'] workouts = form.cleaned_data['workouts']
if len(workouts) == 0:
url = reverse('workouts_view')
return HttpResponseRedirect(url)
action = actionform.cleaned_data['action'] action = actionform.cleaned_data['action']
if action == 'remove': if action == 'remove':
for w in workouts: for w in workouts:
@@ -2068,14 +2074,21 @@ def workouts_bulk_actions(request):
integration = importsources[destination](request.user) integration = importsources[destination](request.user)
try: try:
id = integration.workout_export(w) id = integration.workout_export(w)
messages.info(request,'Workout {id} exported to {destination}'.format(id=encoder.encode_hex(w.id), messages.info(request,
'Workout {id} exported to {destination}'.format(
id=encoder.encode_hex(w.id),
destination=destination)) destination=destination))
except NoTokenError: except NoTokenError:
messages.error(request,'Export to {destination} of workout {id} failed'.format(id=encoder.encode_hex(w.id), messages.error(request,
'Export to {destination} of workout {id} failed'.format(
id=encoder.encode_hex(w.id),
destination=destination)) destination=destination))
url = reverse('workouts_view') url = reverse('workouts_view')
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else:
if len(workouts) == 0:
url = reverse(workouts_view)
return HttpResponseRedirect(url)
else: else:
exportchoice = ExportChoices() exportchoice = ExportChoices()
actionform = WorkoutBulkActions() actionform = WorkoutBulkActions()
@@ -2084,7 +2097,6 @@ def workouts_bulk_actions(request):
form.fields["workouts"].queryset = Workout.objects.filter(id__in=[w.id for w in workouts]) form.fields["workouts"].queryset = Workout.objects.filter(id__in=[w.id for w in workouts])
form.fields["workouts"].initial = workouts form.fields["workouts"].initial = workouts
return render(request,'workout_bulk_actions.html', return render(request,'workout_bulk_actions.html',
{'action':action, {'action':action,
'exportchoice':exportchoice, 'exportchoice':exportchoice,