diff --git a/rowers/templates/plannedsessionview.html b/rowers/templates/plannedsessionview.html
index 662063eb..dc96de68 100644
--- a/rowers/templates/plannedsessionview.html
+++ b/rowers/templates/plannedsessionview.html
@@ -88,7 +88,10 @@
{{ workout.distance }}m |
- {{ workout.duration |durationprint:"%H:%M:%S.%f" }} |
+ {{ workout.duration |durationprint:"%H:%M:%S.%f" }} |
+
+ Detach
+ |
{% endfor %}
diff --git a/rowers/urls.py b/rowers/urls.py
index 8b00c5fb..c46a3ae1 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -492,6 +492,8 @@ urlpatterns = [
url(r'^sessions/(?P\d+)/edit/user/(?P\d+)/$',views.plannedsession_edit_view),
url(r'^sessions/(?P\d+)/clone/user/(?P\d+)/$',views.plannedsession_clone_view),
url(r'^sessions/(?P\d+)/clone/$',views.plannedsession_clone_view),
+ url(r'^sessions/(?P\d+)/detach/(?P\d+)/user/(?P\d+)/$',views.plannedsession_detach_view),
+ url(r'^sessions/(?P\d+)/detach/(?P\d+)/$',views.plannedsession_detach_view),
url(r'^sessions/(?P\d+)/$',views.plannedsession_view,
name='plannedsession_view'),
url(r'^sessions/(?P\d+)/user/(?P\d+)/$',views.plannedsession_view,
diff --git a/rowers/views.py b/rowers/views.py
index 4530f252..e288989c 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -15410,6 +15410,26 @@ def plannedsession_edit_view(request,id=0,userid=0):
})
+@login_required()
+def plannedsession_detach_view(request,id=0,psid=0):
+
+ r = getrequestrower(request)
+
+ try:
+ ps = PlannedSession.objects.get(id=psid)
+ except PlannedSession.DoesNotExist:
+ raise Http404("Planned Session does not exist")
+
+ w = get_workout(id)
+
+ if (checkworkoutuser(request.user,w)==False):
+ return HttpResponseForbidden("Permission Error")
+
+ remove_workout_plannedsession(w,ps)
+
+ url = reverse(plannedsession_view,kwargs={'id':psid})
+
+ return HttpResponseRedirect(url)
@login_required()
def plannedsession_view(request,id=0,userid=0):