diff --git a/rowers/models.py b/rowers/models.py index c2cd5004..14aec8d2 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -934,7 +934,6 @@ def a_week_from_now(): # models related to training planning - draft # Do we need a separate class TestTarget? class TrainingTarget(models.Model): - rower = models.ForeignKey(Rower,related_name='targetathlete',null=True) rowers = models.ManyToManyField(Rower, related_name='targetathletes', verbose_name='Athletes') manager = models.ForeignKey(Rower,related_name='targetmanager',null=True) @@ -976,10 +975,12 @@ class TrainingTargetForm(ModelForm): try: teams = Team.objects.filter(manager=self.instance.manager.user) - - self.fields['rowers'].queryset = Rower.objects.filter( - team__in=teams - ).distinct().order_by("user__last_name","user__first_name") + if not teams: + self.fields.pop('rowers') + else: + self.fields['rowers'].queryset = Rower.objects.filter( + team__in=teams + ).distinct().order_by("user__last_name","user__first_name") except AttributeError: self.fields.pop('rowers') @@ -1007,8 +1008,6 @@ class TrainingPlan(models.Model): ('deactivated','inactive'), ) - # rower field is obsolete. Use rowers - rower = models.ForeignKey(Rower,related_name='planathlete',null=True) rowers = models.ManyToManyField(Rower,related_name='planathletes', verbose_name='Athletes') manager = models.ForeignKey(Rower,related_name='planmanager',null=True) @@ -1043,31 +1042,29 @@ class TrainingPlan(models.Model): self.startdate = enddate self.enddate = startdate + if not self.enddate <= self.startdate: + super(TrainingPlan,self).save(*args, **kwargs) + if self.status: otherplans = TrainingPlan.objects.filter( status=True).exclude( pk=self.pk).order_by( "-startdate") + for otherplan in otherplans: if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate: for rower in self.rowers.all(): if rower in otherplan.rowers.all(): - print otherplan self.status = False + self.save() if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate: for rower in self.rowers.all(): if rower in otherplan.rowers.all(): - print otherplan self.status = False + self.save() - if not self.enddate <= self.startdate: - super(TrainingPlan,self).save(*args, **kwargs) - if self.rower is not None: - self.rowers.add(self.rower) - self.rower = None - self.save() macrocycles = TrainingMacroCycle.objects.filter(plan = self) @@ -1106,9 +1103,12 @@ class TrainingPlanForm(ModelForm): try: teams = Team.objects.filter(manager=self.instance.manager.user) - self.fields['rowers'].queryset = Rower.objects.filter( - team__in=teams - ).distinct().order_by("user__last_name","user__first_name") + if not teams: + self.fields.pop('rowers') + else: + self.fields['rowers'].queryset = Rower.objects.filter( + team__in=teams + ).distinct().order_by("user__last_name","user__first_name") except AttributeError: self.fields.pop('rowers') diff --git a/rowers/templates/trainingplan_create.html b/rowers/templates/trainingplan_create.html index 76c4d07e..6f4ddebb 100644 --- a/rowers/templates/trainingplan_create.html +++ b/rowers/templates/trainingplan_create.html @@ -28,7 +28,7 @@ {{ target.date }} {{ target.name }} - {{ target.notes }} + {{ target.notes|linebreaks }} Edit Delete diff --git a/rowers/views.py b/rowers/views.py index a299c996..2211ba50 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -16177,7 +16177,6 @@ def rower_create_trainingplan(request,userid=0): p = TrainingPlan( name=name, - rower=therower, target=target, manager=themanager, startdate=startdate, @@ -16186,22 +16185,14 @@ def rower_create_trainingplan(request,userid=0): p.save() - + p.rowers.add(therower) - targets2 = TrainingTarget.objects.filter(rower=therower).order_by("date") - for target in targets2: - if target.rower is not None: - target.rowers.add(target.rower) - target.rower = None - target.save() targets = TrainingTarget.objects.filter(rowers=therower).order_by("date") targetform = TrainingTargetForm() - plans = TrainingPlan.objects.filter(rower=therower).order_by("-startdate") - plans2 = TrainingPlan.objects.filter(rowers=therower).order_by("-startdate") + plans = TrainingPlan.objects.filter(rowers=therower).order_by("-startdate") - plans = plans | plans2 form = TrainingPlanForm(targets=targets,initial={'status':False}) @@ -16578,10 +16569,6 @@ def rower_trainingplan_view(request, try: plan = TrainingPlan.objects.get(id=id) - if plan.rower is not None: - plan.rowers.add(plan.rower) - plan.rower = None - plan.save() except TrainingPlan.DoesNotExist: raise Http404("Training Plan Does Not Exist") @@ -16724,8 +16711,11 @@ def rower_trainingplan_view(request, ] if not thismicroid and not thismacroid and not thismesoid: - thismicro = get_todays_micro(plan,thedate=startdate) - thismicroid = thismicro.pk + try: + thismicro = get_todays_micro(plan,thedate=startdate) + thismicroid = thismicro.pk + except AttributeError: + thismicroid = None return render(request,'trainingplan.html', @@ -16873,12 +16863,9 @@ 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.rower != obj.plan.plan.manager: raise PermissionDenied('You are not allowed to edit this training plan cycle') - if r is not None and not checkaccessuser(self.request.user,r): - raise PermissionDenied('You are not allowed to edit this training plan cycle') else: obj.type = 'userdefined' obj.save() @@ -16954,12 +16941,10 @@ 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.rower != obj.plan.plan.plan.manager: raise PermissionDenied('You are not allowed to edit this training plan cycle') - if r is not None and not checkaccessuser(self.request.user,r): - raise PermissionDenied('You are not allowed to edit this training plan cycle') + else: obj.type = 'userdefined' obj.save() @@ -17071,10 +17056,6 @@ class TrainingTargetUpdate(UpdateView): def get_object(self, *args, **kwargs): obj = super(TrainingTargetUpdate, self).get_object(*args, **kwargs) - if obj.rower is not None: - obj.rowers.add(obj.rower) - obj.rower = None - obj.save() if obj.manager is not None and self.request.user.rower != obj.manager: raise PermissionDenied('You are not allowed to edit this training plan cycle')