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) + +