From 724945bc22cdd853d36e96f8303fdbe72f37846b Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 13 Apr 2025 14:38:34 +0200 Subject: [PATCH] fixing export --- rowers/dataprep.py | 9 +++-- rowers/tasks.py | 2 +- rowers/tests/testdata/testdata.tcx.gz | Bin 3989 -> 3989 bytes rowers/views/planviews.py | 52 +++++++++++++------------- 4 files changed, 33 insertions(+), 30 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index dc58b6fb..76572c25 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -382,9 +382,12 @@ def resample(id, r, parent, overwrite=False): rowdata['time'] = (rowdata['time']-rowdata.loc[0,'time'])*1000. rowdata.set_index('time', inplace=True) data.set_index('time', inplace=True) - rowdata_interpolated = rowdata.reindex(data.index.union(rowdata.index)).interpolate('index') - data = data.merge(rowdata_interpolated, left_index=True, right_index=True, how='left') - data = data.reset_index() + try: + rowdata_interpolated = rowdata.reindex(data.index.union(rowdata.index)).interpolate('index') + data = data.merge(rowdata_interpolated, left_index=True, right_index=True, how='left') + data = data.reset_index() + except ValueError: + return data, id, "Error: Could not interpolate data" messages = [] diff --git a/rowers/tasks.py b/rowers/tasks.py index 265f3fd9..395eb94b 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -1836,7 +1836,7 @@ def handle_send_email_noinvoice( 'reason': reason, } - _ = send_template_email(from_email, "support@rowsandall.com", subject, + _ = send_template_email(from_email, ["support@rowsandall.com"], subject, 'paymentconfirmationemail_noinvoice.html', d, **kwargs) diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 9030071b5d875089e5ae6e7ad11d4b622bb92a28..882fac61a66b78c2f6107ad5eca44e9e06a89ddb 100644 GIT binary patch delta 16 XcmbO#KUJPxzMF$%-P+$9+57kbE<^>@ delta 16 XcmbO#KUJPxzMF%?WXH3O?0x(ID#ry; diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index bf2efbc2..f1578746 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -265,7 +265,7 @@ def plannedsession_message_view(request, id=0, userid=0): # Cloning sessions @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_multiclone_view( request, @@ -421,7 +421,7 @@ def plannedsession_multiclone_view( @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def template_share_view(request, id=0, userid=0): ps = get_object_or_404(PlannedSession, pk=id) @@ -437,7 +437,7 @@ def template_share_view(request, id=0, userid=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def template_makeprivate_view(request, id=0, userid=0): ps = get_object_or_404(PlannedSession, pk=id) @@ -449,7 +449,7 @@ def template_makeprivate_view(request, id=0, userid=0): # Manage Template sessions (library) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def template_library_view(request, userid=0): r = getrequestplanrower(request, userid=userid) @@ -511,7 +511,7 @@ def template_library_view(request, userid=0): # Individual user creates training for himself @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_create_view(request, userid=0, @@ -690,7 +690,7 @@ def plannedsession_create_view(request, @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_createtemplate_view(request, userid=0, @@ -783,7 +783,7 @@ def plannedsession_createtemplate_view(request, @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_multicreate_view(request, teamid=0, userid=0, extrasessions=0): @@ -917,7 +917,7 @@ def plannedsession_multicreate_view(request, @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_teamcreate_view(request, teamid=0, userid=0): @@ -1091,7 +1091,7 @@ def plannedsession_teamcreate_view(request, @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) def plannedsession_teamedit_view(request, @@ -1837,7 +1837,7 @@ def plannedsessions_manage_view(request, userid=0, # need clarity on cloning behavior time shift @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_clone_view(request, id=0, userid=0): @@ -1899,7 +1899,7 @@ def plannedsession_clone_view(request, id=0, userid=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_teamclone_view(request, id=0): @@ -1950,7 +1950,7 @@ def plannedsession_teamclone_view(request, id=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_templateedit_view(request, id=0): r = getrequestrower(request) @@ -2069,7 +2069,7 @@ def plannedsession_templateedit_view(request, id=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_tointervals_view(request, id=0): @@ -2102,7 +2102,7 @@ def plannedsession_tointervals_view(request, id=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_togarmin_view(request, id=0): @@ -2137,7 +2137,7 @@ def plannedsession_togarmin_view(request, id=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_totemplate_view(request, id=0): @@ -2172,7 +2172,7 @@ def plannedsession_totemplate_view(request, id=0): @permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True) @user_passes_test(can_plan, login_url="/rowers/paidplans/", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def plannedsession_edit_view(request, id=0, userid=0): @@ -2970,7 +2970,7 @@ def rower_select_instantplan(request, id=0): @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def rower_create_trainingplan(request, id=0): therower = getrequestrower(request, userid=id) @@ -3095,7 +3095,7 @@ def rower_create_trainingplan(request, id=0): @csrf_exempt @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def stepadder(request, id=0): is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' @@ -3168,7 +3168,7 @@ def stepadder(request, id=0): return JSONResponse(status=200,data=post_data) @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def stepdelete(request, id=0): step = get_object_or_404(PlannedSessionStep, pk=id) @@ -3185,7 +3185,7 @@ def stepdelete(request, id=0): return HttpResponseRedirect(url) @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def stepedit(request, id=0, psid=0): step = get_object_or_404(PlannedSessionStep, pk=id) @@ -3291,7 +3291,7 @@ def stepedit(request, id=0, psid=0): @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def stepeditor(request, id=0): ps = get_object_or_404(PlannedSession, pk=id) @@ -3384,7 +3384,7 @@ def stepeditor(request, id=0): }) @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) @permission_required('target.delete_target', fn=get_target_by_pk, raise_exception=True) def rower_delete_trainingtarget(request, id=0): @@ -3605,7 +3605,7 @@ class MacroCycleDelete(DeleteView): # pragma: no cover @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) def rower_trainingplan_execution_view(request, id=0, @@ -3698,7 +3698,7 @@ def rower_trainingplan_execution_view(request, # @user_passes_test(can_plan,login_url="/rowers/paidplans", -# message="This functionality requires a Coach or Self-Coach plan", +# message="This functionality requires a Pro plan", # redirect_field_name=None) @login_required() @permission_required('plan.view_plan', fn=get_plan_by_pk, raise_exception=True) @@ -4124,7 +4124,7 @@ class TrainingTargetUpdate(UpdateView): # pragma: no cover @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) @permission_required('cycle.change_cycle', fn=get_meso_by_pk, raise_exception=True) def planmesocyclebyweek(request, id=0, userid=0): # pragma: no cover @@ -4173,7 +4173,7 @@ def planmesocyclebyweek(request, id=0, userid=0): # pragma: no cover @user_passes_test(can_plan, login_url="/rowers/paidplans", - message="This functionality requires a Coach or Self-Coach plan", + message="This functionality requires a Pro plan", redirect_field_name=None) @permission_required('cycle.change_cycle', fn=get_macro_by_pk, raise_exception=True) def planmacrocyclebymonth(request, id=0, userid=0): # pragma: no cover