From d2d0e6c076661e367df2d9af9896b8ea89b092ec Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Sun, 22 Sep 2019 17:26:23 +0200
Subject: [PATCH] adding templates to team create session
---
.../templates/plannedsessionteamcreate.html | 36 ++++++++++
rowers/urls.py | 1 +
rowers/views/planviews.py | 70 +++++++++++++++++++
3 files changed, 107 insertions(+)
diff --git a/rowers/templates/plannedsessionteamcreate.html b/rowers/templates/plannedsessionteamcreate.html
index 6958c5c7..0c674ef1 100644
--- a/rowers/templates/plannedsessionteamcreate.html
+++ b/rowers/templates/plannedsessionteamcreate.html
@@ -101,6 +101,42 @@
{% endif %}
+
+ Templates
+
+ Click on session name to clone to current period
+
+
+
+
+ | Name |
+ Value |
+ |
+ Delete |
+
+
+
+ {% for ps in sessiontemplates %}
+
+ |
+ {% if ps.name != '' %}
+ {{ ps.name }}
+ {% else %}
+ Unnamed Session
+ {% endif %}
+ |
+ {{ ps.sessionvalue }} |
+ {{ ps.sessionunit }} |
+
+ Delete
+ |
+
+ {% endfor %}
+
+
+
diff --git a/rowers/urls.py b/rowers/urls.py
index 2e40901c..599dbac8 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -658,6 +658,7 @@ urlpatterns = [
name='plannedsession_compare_view'),
re_path(r'^sessions/(?P\d+)/edit/user/(?P\d+)/$',views.plannedsession_edit_view),
re_path(r'^sessions/(?P\d+)/clone/user/(?P\d+)/$',views.plannedsession_clone_view),
+ re_path(r'^sessions/(?P\d+)/clone/team/$',views.plannedsession_teamclone_view),
re_path(r'^sessions/(?P\d+)/clone/$',views.plannedsession_clone_view),
re_path(r'^sessions/(?P\d+)/detach/(?P\b[0-9A-Fa-f]+\b)/user/(?P\d+)/$',views.plannedsession_detach_view),
re_path(r'^sessions/(?P\d+)/detach/(?P\b[0-9A-Fa-f]+\b)/$',views.plannedsession_detach_view),
diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py
index ba6af2b6..97e15a18 100644
--- a/rowers/views/planviews.py
+++ b/rowers/views/planviews.py
@@ -637,6 +637,8 @@ def plannedsession_teamcreate_view(request,
sps = PlannedSession.objects.filter(id__in=ids).order_by(
"preferreddate","startdate","enddate")
+ sessiontemplates = PlannedSession.objects.filter(manager=request.user,is_template=True)
+
if request.method == 'POST':
sessioncreateform = PlannedSessionForm(request.POST)
sessionteamselectform = PlannedSessionTeamForm(
@@ -713,6 +715,7 @@ def plannedsession_teamcreate_view(request,
'plan':trainingplan,
'breadcrumbs':breadcrumbs,
'form':sessioncreateform,
+ 'sessiontemplates':sessiontemplates,
'teamform':sessionteamselectform,
'timeperiod':timeperiod,
'plannedsessions':sps,
@@ -765,6 +768,7 @@ def plannedsession_teamcreate_view(request,
'dateform':dateform,
'breadcrumbs':breadcrumbs,
'form':sessioncreateform,
+ 'sessiontemplates':sessiontemplates,
'teamform':sessionteamselectform,
'timeperiod':timeperiod,
'plannedsessions':sps,
@@ -1448,6 +1452,72 @@ def plannedsession_clone_view(request,id=0,userid=0):
url += '?when='+startdatestring+'/'+enddatestring
+ return HttpResponseRedirect(url)
+
+# Clone an existing planned session
+# need clarity on cloning behavior time shift
+@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans/",
+ message="This functionality requires a Coach or Self-Coach plan",
+ redirect_field_name=None)
+def plannedsession_teamclone_view(request,id=0):
+
+ r = getrequestplanrower(request)
+
+ teams = Team.objects.filter(manager=request.user)
+ if len(teams)>0:
+ teamchoices = [(team.id, team.name) for team in teams]
+ teaminitial = [str(teams[0].id)]
+ else:
+ messages.info(request,"You have no teams established yet. We are redirecting you to the Team Management page.")
+ url = reverse('rower_teams_view')
+ return HttpResponseRedirect(url)
+
+
+ startdate,enddate = get_dates_timeperiod(request)
+
+ try:
+ trainingplan = TrainingPlan.objects.filter(
+ startdate__lte = startdate,
+ rowers = r,
+ enddate__gte = enddate)[0]
+ except IndexError:
+ trainingplan = None
+
+ try:
+ ps = PlannedSession.objects.get(id=id)
+ except PlannedSession.DoesNotExist:
+ raise Http404("Planned Session does not exist")
+
+ if ps.manager != request.user:
+ raise PermissionDenied("You are not allowed to clone this planned session")
+
+
+ ps.pk = None
+ ps.id = None
+ if not ps.is_template:
+ ps.name += ' (copy)'
+ ps.is_template = False
+
+ deltadays = ps.enddate-ps.startdate
+
+ ps.startdate = timezone.now().date()
+ ps.enddate = (timezone.now()+deltadays).date()
+ ps.preferreddate = ps.preferreddate+deltadays
+
+ ps.save()
+
+ url = reverse(plannedsession_teamedit_view,
+ kwargs = {
+ 'sessionid':ps.id,
+ 'userid':r.user.id,
+ }
+ )
+
+ startdatestring = startdate.strftime('%Y-%m-%d')
+ enddatestring = enddate.strftime('%Y-%m-%d')
+ url += '?when='+startdatestring+'/'+enddatestring
+
+
return HttpResponseRedirect(url)
@user_passes_test(hasplannedsessions, login_url="/rowers/paidplans/",