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 +

    + + + + + + + + + + + {% for ps in sessiontemplates %} + + + + + + + {% endfor %} + +
    NameValue Delete
    + {% if ps.name != '' %} + {{ ps.name }} + {% else %} + Unnamed Session + {% endif %} + {{ ps.sessionvalue }} {{ ps.sessionunit }} + Delete +
    +
  • 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/",