diff --git a/rowers/dataroutines.py b/rowers/dataroutines.py index 610e7e47..ab5fc25f 100644 --- a/rowers/dataroutines.py +++ b/rowers/dataroutines.py @@ -1051,6 +1051,9 @@ def handle_nonpainsled(f2, fileformat, summary='', startdatetime='', empowerfirm row2 = rrdata(df=row.df) + if 'quiske' in fileformat: + row2.add_instroke_speed() + if 'speedcoach2' in fileformat or 'nklinklogbook' in fileformat: # impeller consistency impellerdata, consistent, ratio = row.impellerconsistent(threshold=0.3) diff --git a/rowers/views/paymentviews.py b/rowers/views/paymentviews.py index 6567012d..07f5efb7 100644 --- a/rowers/views/paymentviews.py +++ b/rowers/views/paymentviews.py @@ -303,6 +303,11 @@ def confirm_trainingplan_purchase_view(request, id=0): url = reverse('promembership') return HttpResponseRedirect(url) + if not can_plan(request.user): + url = reverse('paidplans_view') + messages.info(request,'You need to upgrade to Self-Coach or Coach first. On your training plan purchases you will get a discount.') + return HttpResponseRedirect(url) + r = request.user.rower plan = get_object_or_404(InstantPlan, pk=id) diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index c39f886b..6244efb7 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -2661,6 +2661,13 @@ def rower_view_instantplan(request, id='', userid=0): 'id': id, }) return HttpResponseRedirect(url) + if not can_plan(request.user): + messages.error( + request, 'You must be on a paid plan to use free training plans') + url = reverse('rower_view_instantplan', kwargs={ + 'id': id, + }) + return HttpResponseRedirect(url) form = InstantPlanSelectForm(request.POST, targets=targets)