Private
Public Access
1
0

first working version of exported session to intervals.icu

This commit is contained in:
2024-12-18 20:35:46 +01:00
parent 946a9dc2a5
commit e6cc169cef
11 changed files with 166 additions and 53 deletions

View File

@@ -7,6 +7,7 @@ from rowers.views.statements import *
from rowers.plannedsessions import get_dates_timeperiod
from rowers.tasks import fetch_strava_workout
from rowers.utils import NoTokenError
from rowers.models import PlannedSession
import rowers.integrations.strava as strava
from rowers.integrations import importsources

View File

@@ -2052,6 +2052,41 @@ def plannedsession_templateedit_view(request, id=0):
'steps': steps,
})
@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",
redirect_field_name=None)
def plannedsession_tointervals_view(request, id=0):
r = getrequestplanrower(request)
startdate, enddate = get_dates_timeperiod(request)
startdate = startdate.date()
enddate = enddate.date()
ps = get_object_or_404(PlannedSession, pk=id)
intervals = IntervalsIntegration(request.user)
result = intervals.plannedsession_create(ps)
if not result: # pragma: no cover
messages.error(
request, 'You failed to export your session to Intervals')
else:
messages.info(
request, 'Session is now on Intervals.')
url = reverse(plannedsession_view, kwargs={'userid': r.user.id,
'id': ps.id, })
startdatestring = startdate.strftime('%Y-%m-%d')
enddatestring = enddate.strftime('%Y-%m-%d')
url += '?when='+startdatestring+'/'+enddatestring
next = request.GET.get('next', url)
return HttpResponseRedirect(next)
@permission_required('plannedsession.change_session', fn=get_session_by_pk, raise_exception=True)
@user_passes_test(can_plan, login_url="/rowers/paidplans/",
@@ -2486,6 +2521,7 @@ def plannedsession_view(request, id=0, userid=0):
if ps.steps: # pragma: no cover
d = ps.steps
steps = ps_dict_get_description_html(d, short=False)
steps_intervals = ps.steps_intervals()
return render(request, 'plannedsessionview.html',
{
@@ -2516,6 +2552,7 @@ def plannedsession_view(request, id=0, userid=0):
'coursediv': coursediv,
'comments': comments,
'steps': steps,
'steps_intervals': steps_intervals,
}
)
@@ -2707,6 +2744,7 @@ def rower_view_instantplan(request, id='', userid=0):
startdate = form.cleaned_data['startdate']
notes = form.cleaned_data['notes']
datechoice = form.cleaned_data['datechoice']
plan_past_days = form.cleaned_data['plan_past_days']
status = True
if target and datechoice == 'target': # pragma: no cover
@@ -2726,10 +2764,14 @@ def rower_view_instantplan(request, id='', userid=0):
notes=notes,
)
if not plan_past_days:
p.startdate = timezone.now().date()
p.save()
p.rowers.add(r)
create_sessions_from_json(plansteps, r, startdate, r.user, planbyrscore=byrscore, plan=p, asynchronous=True)
create_sessions_from_json(plansteps, r, startdate, r.user, planbyrscore=byrscore,
plan=p, plan_past_days = plan_past_days, asynchronous=True)
messages.info(request, 'Your Sessions have been added')
@@ -3336,8 +3378,8 @@ class TrainingPlanDelete(DeleteView):
success_url = reverse_lazy(rower_create_trainingplan)
def post(self, request, *args, **kwargs):
delete_sessions = request.POST.get('delete_sessions')
delete_all_sessions = request.POST.get('delete_all_sessions')
delete_sessions = request.POST.get('delete_sessions',0)
delete_all_sessions = request.POST.get('delete_all_sessions',0)
self.object = self.get_object()
self.object.delete(delete_sessions=delete_sessions, delete_all_sessions=delete_all_sessions)
return HttpResponseRedirect(self.get_success_url())