Private
Public Access
1
0

instant plans proto page

attached workout notification using encoded workout id
This commit is contained in:
Sander Roosendaal
2021-03-10 06:35:15 +01:00
parent b6ef3a8072
commit b18d04e088
5 changed files with 77 additions and 2 deletions

View File

@@ -30,6 +30,8 @@ import pandas as pd
from rowingdata import rowingdata as rrdata
from rowingdata import rower as rrower
from rowers.opaque import encoder
def to_pace(pace):
minutes, seconds = divmod(pace,60)
seconds, rest = divmod(seconds, 1)
@@ -455,7 +457,7 @@ def add_workouts_plannedsession(ws,ps,r):
w.plannedsession = ps
w.save()
result += 1
comments.append('Attached workout %i to session' % w.id)
comments.append('Attached workout %s to session' % encoder.encode_hex(w.id))
if ps.sessiontype == 'coursetest':
record = CourseTestResult(
userid=w.user.id,

View File

@@ -0,0 +1,24 @@
{% extends "newbase.html" %}
{% load staticfiles %}
{% load rowerfilters %}
{% block title %}Rowsandall Training Plans{% endblock %}
{% block main %}
<h1>Training Plans</h1>
<ul class="main-content">
{% for plan in trainingdict %}
<li>
<p><a href="/rowers/plans/{{ plan.ID }}">{{ plan.name }}</a></p>
<p>{{ plan.plan|lookup:"duration"}}</p>
</li>
{% endfor %}
</ul>
{% endblock %}
{% block sidebar %}
{% include 'menu_plan.html' %}
{% endblock %}

View File

@@ -740,6 +740,7 @@ urlpatterns = [
re_path(r'^test\_callback',views.rower_process_testcallback,name='rower_process_testcallback'),
re_path(r'^createplan/$',views.rower_create_trainingplan,name='rower_create_trainingplan'),
re_path(r'^createplan/user/(?P<id>\d+)/$',views.rower_create_trainingplan,name='rower_create_trainingplan'),
re_path(r'^plans/$', views.rower_select_instantplan, name='rower_select_instantplan'),
re_path(r'^deleteplan/(?P<pk>\d+)/$',login_required(
views.TrainingPlanDelete.as_view()),name='trainingplan_delete_view'),
re_path(r'^deletemicrocycle/(?P<pk>\d+)/$',login_required(

View File

@@ -2425,6 +2425,54 @@ class PlannedSessionDelete(DeleteView):
return obj
@user_passes_test(can_plan,login_url="/rowers/paidplans",
message="This functionality requires a Coach or Self-Coach plan",
redirect_field_name=None)
def rower_select_instantplan(request,id=0):
r = getrequestrower(request,userid=id)
themanager = getrower(request.user)
# get and present available plans
authorizationstring = 'Bearer '+settings.WORKOUTS_FIT_TOKEN
url = settings.WORKOUTS_FIT_URL+"/trainingplan/"
headers = {'Authorization':authorizationstring}
trainingdict = {}
response = requests.get(url=url, headers=headers)
if response.status_code != 200:
messages.error(request,"Could not connect to the training plan server")
else:
trainingdict = response.json()['plans']
for plan in trainingdict:
print(plan['ID'],plan['name'],plan['plan']['duration'])
breadcrumbs = [
{
'url':reverse('plannedsessions_view'),
'name': 'Sessions'
},
{
'url':reverse(rower_create_trainingplan,
kwargs={'id':id}),
'name': 'Manage Plans and Targets'
},
{
'url':reverse('rower_select_instantplan'),
'name': 'Select Existing Plans'
}
]
return render(request,
'instantplans.html',
{
'rower':r,
'active':'nav-plan',
'trainingdict':trainingdict,
})
@user_passes_test(can_plan,login_url="/rowers/paidplans",
message="This functionality requires a Coach or Self-Coach plan",