diff --git a/rowers/templates/trainingplan.html b/rowers/templates/trainingplan.html
index 3d1b853a..97ffdffa 100644
--- a/rowers/templates/trainingplan.html
+++ b/rowers/templates/trainingplan.html
@@ -210,6 +210,10 @@
/
delete
/
+
+ Replan by Weeks
+
+ /
{% endif %}
sessions
diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py
index b52f9f5b..c8f67040 100644
--- a/rowers/templatetags/rowerfilters.py
+++ b/rowers/templatetags/rowerfilters.py
@@ -187,7 +187,7 @@ def may_edit(workout,request):
@register.filter
def mayeditplan(obj,request):
-
+
if obj is None:
return False
diff --git a/rowers/urls.py b/rowers/urls.py
index 18cc1ae3..17401d1d 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -441,6 +441,8 @@ urlpatterns = [
name='macrocycle_update_view'),
url(r'^mesocycle/(?P\d+)/$',views.TrainingMesoCycleUpdate.as_view(),
name='mesocycle_update_view'),
+ url(r'^mesocycle/(?P\d+)/planbyweeks/$',views.planmesocyclebyweek),
+ url(r'^mesocycle/(?P\d+)/planbyweeks/user/(?P\d+)/$',views.planmesocyclebyweek),
url(r'^microcycle/(?P\d+)/$',views.TrainingMicroCycleUpdate.as_view(),
name='microcycle_update_view'),
url(r'^deletetarget/(?P\d+)/$',views.rower_delete_trainingtarget),
diff --git a/rowers/views.py b/rowers/views.py
index 20b6288a..e2dc12fa 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -16725,7 +16725,7 @@ class TrainingMacroCycleUpdate(UpdateView):
def get_object(self, *args, **kwargs):
obj = super(TrainingMacroCycleUpdate, self).get_object(*args, **kwargs)
- if obj.plan.manager is not None and self.request.user != obj.plan.manager:
+ if obj.plan.manager is not None and self.request.user.rower != obj.plan.manager:
raise PermissionDenied('You are not allowed to edit this training plan cycle')
if not checkaccessuser(self.request.user,obj.plan.rower):
@@ -16800,7 +16800,7 @@ class TrainingMesoCycleUpdate(UpdateView):
def get_object(self, *args, **kwargs):
obj = super(TrainingMesoCycleUpdate, self).get_object(*args, **kwargs)
r = obj.plan.plan.rower
- if obj.plan.plan.manager is not None and self.request.user != obj.plan.plan.manager:
+ if obj.plan.plan.manager is not None and self.request.user.rower != obj.plan.plan.manager:
raise PermissionDenied('You are not allowed to edit this training plan cycle')
if not checkaccessuser(self.request.user,r):
@@ -16881,7 +16881,7 @@ class TrainingMicroCycleUpdate(UpdateView):
def get_object(self, *args, **kwargs):
obj = super(TrainingMicroCycleUpdate, self).get_object(*args, **kwargs)
r = obj.plan.plan.plan.rower
- if obj.plan.plan.plan.manager is not None and self.request.user != obj.plan.plan.plan.manager.user:
+ if obj.plan.plan.plan.manager is not None and self.request.user.rower != obj.plan.plan.plan.manager:
raise PermissionDenied('You are not allowed to edit this training plan cycle')
if not checkaccessuser(self.request.user,r):
@@ -16898,6 +16898,41 @@ class TrainingPlanUpdate(UpdateView):
template_name = 'trainingplan_edit.html'
form_class = TrainingPlanForm
+ # extra parameters
+ def get_context_data(self, **kwargs):
+ context = super(TrainingPlanUpdate, self).get_context_data(**kwargs)
+
+ if 'userid' in kwargs:
+ userid = kwargs['userid']
+ else:
+ userid=0
+
+ breadcrumbs = [
+ {
+ 'url':reverse(plannedsessions_view,
+ kwargs={'userid':userid}),
+ 'name': 'Plan'
+ },
+ {
+ 'url':reverse(rower_trainingplan_view,
+ kwargs={'userid':userid,
+ 'id':self.object.id}),
+ 'name': self.object.name
+ },
+ {
+ 'url':reverse('trainingplan_update_view',
+ kwargs={'pk':self.object.pk}),
+ 'name': 'Edit'
+ }
+
+ ]
+
+ context['active'] = 'nav-plan'
+ context['breadcrumbs'] = breadcrumbs
+ context['rower'] = getrequestrower(self.request,userid=userid)
+
+ return context
+
def get_success_url(self):
return reverse(rower_create_trainingplan)
@@ -16912,7 +16947,7 @@ class TrainingPlanUpdate(UpdateView):
def get_object(self, *args, **kwargs):
obj = super(TrainingPlanUpdate, self).get_object(*args, **kwargs)
- if obj.manager is not None and self.request.user != obj.manager.user:
+ if obj.manager is not None and self.request.user.rower != obj.manager.user:
raise PermissionDenied('You are not allowed to edit this training plan cycle')
if not checkaccessuser(self.request.user,obj.rower):
@@ -16935,15 +16970,62 @@ class TrainingTargetUpdate(UpdateView):
def get_object(self, *args, **kwargs):
obj = super(TrainingTargetUpdate, self).get_object(*args, **kwargs)
- if obj.manager is not None and self.request.user != obj.manager.user:
+ if obj.manager is not None and self.request.user.rower != obj.manager.user:
raise PermissionDenied('You are not allowed to edit this training plan cycle')
if not checkaccessuser(self.request.user,obj.rower):
raise PermissionDenied('You are not allowed to edit this training plan target')
return obj
+def allsundays(startdate,enddate):
+ d = startdate
+ d += timedelta(days = 6 - d.weekday()) # first Sunday
+ while d cycle.startdate:
+ monday = cycle.startdate
+ if nextsunday < cycle.enddate and i == len(sundays)-2:
+ nextsunday = cycle.enddate
+ micro = TrainingMicroCycle(startdate = monday,
+ enddate = nextsunday,
+ plan = cycle,
+ name = 'Week %s' % sundays[i+1].isocalendar()[1],
+ type = 'userdefined')
+ micro.save()
+
+ micros = TrainingMicroCycle.objects.filter(plan=cycle)
+
+ url = reverse(rower_trainingplan_view,
+ kwargs = {'userid':str(userid),
+ 'id':str(cycle.plan.plan.id),
+ 'thismicroid':str(micros[0].id)})
+
+ return HttpResponseRedirect(url)
+
+