diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py
index 692e216d..1a5ae4ea 100644
--- a/rowers/plannedsessions.py
+++ b/rowers/plannedsessions.py
@@ -2,6 +2,7 @@
from django.utils import timezone
from datetime import datetime
from datetime import timedelta
+from datetime import date
import time
from django.db import IntegrityError
import uuid
@@ -104,8 +105,9 @@ def remove_rower_session(r,ps):
return 1
-def get_sessions(r,startdate=timezone.now(),
- enddate=timezone.now()+timezone.timedelta(+1000)):
+def get_sessions(r,startdate=date.today(),
+ enddate=date.today()+timezone.timedelta(+1000)):
+
sps = PlannedSession.objects.filter(
rower__in=[r],
startdate__gte=startdate,
diff --git a/rowers/templates/graphimage_delete_confirm.html b/rowers/templates/graphimage_delete_confirm.html
index 8b0dfa3f..04989cea 100644
--- a/rowers/templates/graphimage_delete_confirm.html
+++ b/rowers/templates/graphimage_delete_confirm.html
@@ -40,4 +40,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/rowers/templates/plannedsessiondeleteconfirm.html b/rowers/templates/plannedsessiondeleteconfirm.html
new file mode 100644
index 00000000..0a6f3d7f
--- /dev/null
+++ b/rowers/templates/plannedsessiondeleteconfirm.html
@@ -0,0 +1,45 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+
+{% block title %}Planned Session{% endblock %}
+
+{% block content %}
+
+ {% include "planningbuttons.html" %}
+
+
+
+
Confirm Delete
+
This will permanently delete the planned session
+
+
+
+
+
+
+
+
+
Session {{ psdict.name.1 }}
+
+ {% for attr in attrs %}
+ {% for key,value in psdict.items %}
+ {% if key == attr %}
+
+ | {{ value.0 }} | {{ value.1 }} |
+
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+
+
+
+
+
+{% endblock %}
diff --git a/rowers/templates/plannedsessions.html b/rowers/templates/plannedsessions.html
new file mode 100644
index 00000000..8ff10042
--- /dev/null
+++ b/rowers/templates/plannedsessions.html
@@ -0,0 +1,54 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+
+{% block title %}Planned Sessions{% endblock %}
+
+{% block content %}
+
+ {% include "planningbuttons.html" %}
+
+
+
+
+
Plan
+
+ Click on session name to view
+
+
+
+
+ | After |
+ Before |
+ Name |
+ Value |
+ |
+
+
+
+ {% for ps in plannedsessions %}
+
+ | {{ ps.startdate|date:"Y-m-d" }} |
+ {{ ps.enddate|date:"Y-m-d" }} |
+
+ {% if ps.name != '' %}
+ {{ ps.name }}
+ {% else %}
+ Unnamed Session
+ {% endif %}
+ |
+ {{ ps.sessionvalue }} |
+ {{ ps.sessionunit }} |
+
+ {% endfor %}
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/rowers/urls.py b/rowers/urls.py
index 884e6b95..bced6757 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -399,6 +399,10 @@ urlpatterns = [
url(r'^sessions/create$',views.plannedsession_create_view),
url(r'^sessions/(?P\d+)/edit$',views.plannedsession_edit_view),
url(r'^sessions/(?P\d+)$',views.plannedsession_view),
+ url(r'^sessions/(?P\d+)/deleteconfirm$',views.plannedsession_deleteconfirm_view),
+ url(r'^sessions/(?P\d+)/delete$',views.plannedsession_delete_view),
+ url(r'^sessions/?$',views.plannedsessions_view),
+ url(r'^sessions/(?P[\w\ ]+.*)$',views.plannedsessions_view),
]
if settings.DEBUG:
diff --git a/rowers/views.py b/rowers/views.py
index 200111d4..ebe3ed56 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -11704,7 +11704,7 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt',
})
# Individual user creates training for himself
-@user_passes_test(hasplannedsessions,login_url="/",
+@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
redirect_field_name=None)
def plannedsession_create_view(request):
@@ -11752,8 +11752,49 @@ def plannedsession_create_view(request):
'plannedsessions':sps,
})
+@login_required()
+def plannedsessions_view(request,timeperiod='today',rowerid=0):
+
+ if rowerid==0:
+ r = getrower(request.user)
+ else:
+ r = getrower(id=rowerid)
+ if not checkaccessuser(request.user,r):
+ raise Http404("You don't have access to this plan")
+
+ # set start end date according timeperiod
+ if timeperiod=='today':
+ startdate=datetime.date.today()
+ enddate=datetime.date.today()
+ elif timeperiod=='tomorrow':
+ startdate=datetime.date.today()+timezone.timedelta(days=1)
+ enddate=datetime.date.today()+timezone.timedelta(days=1)
+ elif timeperiod=='thisweek':
+ today = datetime.date.today()
+ startdate = datetime.date.today()-timezone.timedelta(days=today.weekday())
+ enddate = startdate+timezone.timedelta(weeks=1)
+ elif timeperiod=='thismonth':
+ today = datetime.date.today()
+ startdate = today.replace(day=1)
+ enddate = startdate+timezone.timedelta(days=32)
+ enddate = enddate.replace(day=1)
+ else:
+ startdate = datetime.date.today()
+ enddate = datetime.date.today()
+
+
+
+ sps = get_sessions(r,startdate=startdate,enddate=enddate)
+
+ return render(request,'plannedsessions.html',
+ {
+ 'teams':get_my_teams(request.user),
+ 'plannedsessions':sps,
+ })
+
+
# Edit an existing planned session
-@user_passes_test(hasplannedsessions,login_url="/",
+@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
redirect_field_name=None)
def plannedsession_edit_view(request,id=0):
@@ -11764,6 +11805,9 @@ def plannedsession_edit_view(request,id=0):
except PlannedSession.DoesNotExist:
raise Http404("Planned Session does not exist")
+ if ps.manager != request.user:
+ raise Http404("You are not allowed to delete this planned session")
+
if request.method == 'POST':
sessioncreateform = PlannedSessionForm(request.POST,instance=ps)
if sessioncreateform.is_valid():
@@ -11802,6 +11846,9 @@ def plannedsession_edit_view(request,id=0):
'thesession':ps,
})
+
+
+@login_required()
def plannedsession_view(request,id=0):
r = getrower(request.user)
@@ -11812,7 +11859,9 @@ def plannedsession_view(request,id=0):
raise Http404("Planned Session does not exist")
- psdict = {}
+ if ps.manager != request.user:
+ raise Http404("You are not allowed to delete this planned session")
+
psdict = my_dict_from_instance(ps,PlannedSession)
@@ -11821,7 +11870,52 @@ def plannedsession_view(request,id=0):
'psdict': psdict,
'attrs':[
'name','startdate','enddate','sessiontype',
- 'comment'
+ ]
+ }
+ )
+
+@login_required()
+def plannedsession_delete_view(request,id=0):
+ r = getrower(request.user)
+
+ try:
+ ps = PlannedSession.objects.get(id=id)
+ except PlannedSession.DoesNotExist:
+ raise Http404("Planned Session does not exist")
+
+
+ if ps.manager != request.user:
+ raise Http404("You are not allowed to delete this planned session")
+
+ ps.delete()
+
+ url = reverse(plannedsessions_view)
+
+ return HttpResponseRedirect(url)
+
+@login_required()
+def plannedsession_deleteconfirm_view(request,id=0):
+
+ r = getrower(request.user)
+
+ try:
+ ps = PlannedSession.objects.get(id=id)
+ except PlannedSession.DoesNotExist:
+ raise Http404("Planned Session does not exist")
+
+
+ if ps.manager != request.user:
+ raise Http404("You are not allowed to delete this planned session")
+
+
+ psdict = my_dict_from_instance(ps,PlannedSession)
+
+ return render(request,'plannedsessiondeleteconfirm.html',
+ {
+ 'ps':ps,
+ 'psdict': psdict,
+ 'attrs':[
+ 'name','startdate','enddate','sessiontype',
]
}
)
diff --git a/templates/base.html b/templates/base.html
index c1b47ac0..d5912f8f 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -3,13 +3,6 @@
{% load rowerfilters %}
{% endblock %}
-{% block plans %}
-{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
-Plans
-{% else %}
-Plans
-{% endif %}
-{% endblock %}
{% block teams %}
diff --git a/templates/basebase.html b/templates/basebase.html
index 662f60c3..0a96c96d 100644
--- a/templates/basebase.html
+++ b/templates/basebase.html
@@ -202,8 +202,11 @@
{% endblock %}
{% block challenges %}