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 %} +
  • +

    {{ plan.name }}

    +

    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,