From b107ea3a50eb0f0cada1b0194238ae6bf214444d Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 5 Mar 2021 08:57:37 +0100 Subject: [PATCH] template library --- rowers/models.py | 1 + rowers/templates/menu_plan.html | 10 +++- rowers/templates/templatelibrary.html | 67 +++++++++++++++++++++++++++ rowers/urls.py | 1 + rowers/views/planviews.py | 50 ++++++++++++++++++++ 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 rowers/templates/templatelibrary.html diff --git a/rowers/models.py b/rowers/models.py index 43b8c3dc..0d5a45ad 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2316,6 +2316,7 @@ class PlannedSession(models.Model): hasranking = models.BooleanField(default=False) is_template = models.BooleanField(default=False) + is_public = models.BooleanField(default=False) fitfile = models.FileField(upload_to=get_file_path,blank=True,null=True) #steps_json = models.TextField(max_length=10000,default=None,blank=True,null=True) diff --git a/rowers/templates/menu_plan.html b/rowers/templates/menu_plan.html index 9c5d823d..820b95f7 100644 --- a/rowers/templates/menu_plan.html +++ b/rowers/templates/menu_plan.html @@ -100,6 +100,14 @@ {% endif %} +
    +
  • + +  Session Library + +
  • +
+

 

{% if user.is_authenticated and user|is_planmember %} @@ -117,7 +125,7 @@ {% if member == rower.user%} • {% else %} -   +   {% endif %} {{ member.first_name }} {{ member.last_name }} diff --git a/rowers/templates/templatelibrary.html b/rowers/templates/templatelibrary.html new file mode 100644 index 00000000..3d3e702c --- /dev/null +++ b/rowers/templates/templatelibrary.html @@ -0,0 +1,67 @@ +{% extends "newbase.html" %} +{% load staticfiles %} +{% load rowerfilters %} + +{% block title %}Planned Sessions{% endblock %} + +{% block main %} + +

Planned Session Library

+ +
    +
  • + {% if templates %} +

    + Click on session name to view, edit to change the session. +

    + + + + + + + + + + + {% for ps in templates %} + + + + + + + + + {% endfor %} + +
    NameTypeModeEdit +
    + {% if ps.name != '' %} + {{ ps.name }} + {% else %} + Unnamed Session + {% endif %} + {{ ps.get_sessiontype_display }} {{ ps.get_sessionmode_display }} + + + + {{ ps.sessionvalue }} {{ ps.sessionunit }}
    + {% else %} + You have no sessions in your Library yet. + {% endif %} + +
  • + +
+ + +{% endblock %} + + +{% block sidebar %} +{% include 'menu_plan.html' %} +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index c3bda9e1..ed35a9fc 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -793,6 +793,7 @@ urlpatterns = [ name='trainingtarget_update_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/test\_strokedata/$',views.strokedataform), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/v2/test\_strokedata/$',views.strokedataform_v2), + re_path(r'^sessions/library/$',views.template_library_view,name="template_library_view"), re_path(r'^sessions/teamcreate/user/(?P\d+)/$',views.plannedsession_teamcreate_view, name='plannedsession_teamcreate_view'), re_path(r'^sessions/teamcreate/team/(?P\d+)/user/(?P\d+)/$', diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index 14c60855..5499e562 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -412,6 +412,48 @@ def plannedsession_multiclone_view( } ) + +# Manage Template sessions (library) +@user_passes_test(can_plan,login_url="/rowers/paidplans/", + message="This functionality requires a Coach or Self-Coach plan", + redirect_field_name=None) +def template_library_view(request,userid=0): + r = getrequestplanrower(request,userid=userid) + templates = PlannedSession.objects.filter(manager=request.user,is_template=True) + + startdate,enddate = get_dates_timeperiod(request) + + try: + trainingplan = TrainingPlan.objects.filter( + startdate__lte = startdate, + rowers = r, + enddate__gte = enddate)[0] + except IndexError: + trainingplan = None + + breadcrumbs = [ + { + 'url': reverse(plannedsessions_view), + 'name': 'Planned Sessions' + }, + { + 'url': reverse(template_library_view), + 'name': 'Session Library', + } + ] + + return render(request,'templatelibrary.html', + { + 'teams':get_my_teams(request.user), + 'breadcrumbs': breadcrumbs, + 'templates':templates, + 'plan': trainingplan, + 'rower':r, + 'active':'nav-plan', + } + ) + + # Individual user creates training for himself @user_passes_test(can_plan,login_url="/rowers/paidplans/", message="This functionality requires a Coach or Self-Coach plan", @@ -511,6 +553,14 @@ def plannedsession_create_view(request, manager=request.user, is_template=True).order_by("name") + sessiontemplates2 = PlannedSession.objects.filter( + is_template=True,is_public=True + ).order_by("name") + + sessiontemplates = sessiontemplates | sessiontemplates2 + + sessiontemplates = sessiontemplates.order_by("name") + tag = request.GET.get('tag') if tag: tags = [tag]