diff --git a/rowers/models.py b/rowers/models.py
index 69f1dade..51caddf5 100644
--- a/rowers/models.py
+++ b/rowers/models.py
@@ -32,6 +32,7 @@ from scipy.interpolate import splprep, splev, CubicSpline,interp1d
import numpy as np
import shutil
+import requests
from rowingdata import trainingparser
@@ -1542,7 +1543,22 @@ class InstantPlan(models.Model):
hoursperweek = models.IntegerField(default=4,verbose_name='Hours Per Week')
yaml = models.FileField(upload_to=get_file_path,verbose_name="Plan YAML file",null=True,blank=True)
+ def __str__(self):
+ return self.name
+
def save(self, *args, **kwargs):
+ yamltext = self.yaml.read()
+
+ authorizationstring = 'Bearer '+settings.WORKOUTS_FIT_TOKEN
+ url = settings.WORKOUTS_FIT_URL+"/trainingplan/"
+ headers = {'Authorization':authorizationstring}
+ response = requests.post(url=url,headers=headers,data=yamltext)
+ if response.status_code == 200:
+ data = response.json()
+ self.yaml.name = data['filename']
+ self.uuid = data['ID']
+ self.name = data['name']
+ self.yaml = None
super(InstantPlan, self).save(*args, **kwargs)
class InstantPlanForm(ModelForm):
diff --git a/rowers/templates/instantplans.html b/rowers/templates/instantplans.html
index 5a6a3be1..d20df48c 100644
--- a/rowers/templates/instantplans.html
+++ b/rowers/templates/instantplans.html
@@ -9,10 +9,16 @@
Training Plans
- {% for plan in trainingdict %}
- -
-
{{ plan.name }}
- {{ plan.plan|lookup:"duration"}}
+ {% for plan in plans %}
+ -
+
+
Created by: {{ plan.owner.first_name }} {{ plan.owner.last_name }}
+ Plan length: {{ plan.duration }} days
+ {{ plan.description }}
+ {{ plan.target }}
+ Goal: {{ plan.goal }}
+ {{ plan.hoursperweek }} hours per week
+
{% endfor %}
{% if user.is_authenticated and user.is_staff %}
diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py
index bde0c3dd..37c25339 100644
--- a/rowers/views/planviews.py
+++ b/rowers/views/planviews.py
@@ -2508,7 +2508,7 @@ def add_instantplan_view(request):
form = InstantPlanForm(request.POST,request.FILES)
if form.is_valid():
ip = form.save(commit=False)
- ip.manager = r.user
+ ip.owner = r.user
ip.save()
url = reverse(rower_select_instantplan)
@@ -2553,17 +2553,7 @@ def rower_select_instantplan(request,id=0):
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']
+ ips = InstantPlan.objects.all().order_by("duration")
breadcrumbs = [
{
@@ -2587,7 +2577,7 @@ def rower_select_instantplan(request,id=0):
{
'rower':r,
'active':'nav-plan',
- 'trainingdict':trainingdict,
+ 'plans':ips,
})
diff --git a/rowers/views/statements.py b/rowers/views/statements.py
index 398a1ed1..be74a026 100644
--- a/rowers/views/statements.py
+++ b/rowers/views/statements.py
@@ -118,7 +118,7 @@ from rowers.models import (
PlannedSessionComment,CoachRequest,CoachOffer,
VideoAnalysis,ShareKey,
StandardCollection,CourseStandard,
- VirtualRaceFollower,TombStone
+ VirtualRaceFollower,TombStone, InstantPlan
)
from rowers.models import (
RowerPowerForm,RowerHRZonesForm,RowerForm,RowerCPForm,GraphImage,AdvancedWorkoutForm,