diff --git a/rowers/models.py b/rowers/models.py index 20be9e6f..6d0adf97 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -3600,6 +3600,8 @@ class Workout(models.Model): ) except ValueError: stri = self.name + except AttributeError: + return "No workout" else: try: stri = u'{d} {n} {dist}m {duration} {workouttype} {boattype} {ownerfirst} {ownerlast}'.format( diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index f3b37174..60191a7d 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index e2134167..e09c2fc0 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -2039,14 +2039,17 @@ def workouts_setrpe_view(request,userid=0): @login_required() def workouts_bulk_actions(request): r = getrower(request.user) - action = request.session['action'] - workoutids = request.session['ids'] + action = request.session.get('action','export') + workoutids = request.session.get('ids',[]) workouts = [] + exportchoice = 'strava' try: for encid in workoutids: w = get_workout_by_opaqueid(request, encid) if w.user == r: workouts.append(w) + else: + messages.error(request,'Bulk actions are not accessible to coaches') except KeyError: pass @@ -2055,6 +2058,9 @@ def workouts_bulk_actions(request): form = WorkoutMultipleCompareForm(request.POST) if form.is_valid() and actionform.is_valid(): workouts = form.cleaned_data['workouts'] + if len(workouts) == 0: + url = reverse('workouts_view') + return HttpResponseRedirect(url) action = actionform.cleaned_data['action'] if action == 'remove': for w in workouts: @@ -2075,7 +2081,10 @@ def workouts_bulk_actions(request): destination=destination)) url = reverse('workouts_view') return HttpResponseRedirect(url) - + else: + if len(workouts) == 0: + url = reverse(workouts_view) + return HttpResponseRedirect(url) else: exportchoice = ExportChoices() actionform = WorkoutBulkActions() @@ -2084,7 +2093,6 @@ def workouts_bulk_actions(request): form.fields["workouts"].queryset = Workout.objects.filter(id__in=[w.id for w in workouts]) form.fields["workouts"].initial = workouts - return render(request,'workout_bulk_actions.html', {'action':action, 'exportchoice':exportchoice,