diff --git a/rowers/templates/plannedsessions.html b/rowers/templates/plannedsessions.html
index 160abda7..67e57de8 100644
--- a/rowers/templates/plannedsessions.html
+++ b/rowers/templates/plannedsessions.html
@@ -154,6 +154,12 @@
href="/rowers/sessions/sendcalendar/user/{{ rower.user.id }}/?when={{ timeperiod }}">
Get Calendar File
+ {% if user.is_authenticated and user.is_staff %}
+
+ Save to YaML
+
+ {% endif %}
Actual vs Plan chart
diff --git a/rowers/urls.py b/rowers/urls.py
index e35efe3c..4251c30e 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -1055,6 +1055,10 @@ urlpatterns = [
name='plannedsessions_coach_icsemail_view'),
re_path(r'^sessions/sendcalendar/user/(?P\d+)/$', views.plannedsessions_icsemail_view,
name='plannedsessions_icsemail_view'),
+ re_path(r'^sessions/saveasplan/$', views.save_plan_yaml,
+ name='save_plan_yaml'),
+ re_path(r'^sessions/saveasplan/user/(?P\d+)/$', views.save_plan_yaml,
+ name='save_plan_yaml'),
re_path(r'^sessions/$', views.plannedsessions_view,
name='plannedsessions_view'),
re_path(r'^sessions/user/(?P\d+)/$', views.plannedsessions_view,
diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py
index 36295e50..ade55c80 100644
--- a/rowers/views/planviews.py
+++ b/rowers/views/planviews.py
@@ -1375,6 +1375,55 @@ def plannedsessions_coach_view(request,
}
)
+@login_required()
+def save_plan_yaml(request, userid=0):
+ r = getrequestrower(request, userid=userid)
+ startdate, enddate = get_dates_timeperiod(request)
+ startdate = startdate.date()
+ enddate = enddate.date()
+
+ duration = (enddate-startdate).days+1
+ filename = 'myplan.yml'
+
+ plan = {
+ 'filename': filename,
+ 'name': 'Training Plan',
+ 'duration': duration,
+ 'description': 'My Training Plan',
+ }
+
+ sps = get_sessions(r, startdate=startdate, enddate=enddate)
+
+ trainingdays = []
+
+ # add sessions to days
+ for i in range(duration):
+ dd = startdate+timedelta(days=i)
+ workouts = []
+ for ps in sps:
+ if ps.preferreddate == dd:
+ sessionsport = mytypes.fitmapping[ps.sessionsport].capitalize()
+ steps = ps.steps
+ steps['filename'] = ""
+ workouts.append(steps)
+
+ trainingdays.append({'order': i+1, 'workouts': workouts})
+
+ plan['trainingDays'] = trainingdays
+
+ response = HttpResponse(yaml.dump(plan))
+
+ response['Content-Disposition'] = 'attachment; filename="training_plan_{u}_{d1}_{d2}.yml"'.format(
+ u=request.user.username,
+ d1=startdate.strftime("%Y%m%d"),
+ d2=enddate.strftime("%Y%m%d"),
+ )
+
+ response['Content-Type'] = 'application/octet-stream'
+
+ return response
+
+
@login_required()
def plannedsessions_view(request,