diff --git a/rowers/models.py b/rowers/models.py index 38151ee3..28c15d86 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -979,11 +979,48 @@ class TrainingTargetForm(ModelForm): class TrainingPlan(models.Model): rower = models.ForeignKey(Rower) name = models.CharField(max_length=150,blank=True) - target = models.ForeignKey(TrainingTarget,blank=True) + target = models.ForeignKey(TrainingTarget,blank=True,null=True) startdate = models.DateField(default=timezone.now) enddate = models.DateField( default=half_year_from_now) + def __unicode__(self): + name = self.name + startdate = self.startdate + enddate = self.enddate + firstname = self.rower.user.first_name + lastname = self.rower.user.last_name + + stri = u'Training Plan for {first_name} {last_name} {s} - {e}: {n}'.format( + s = startdate.strftime('%Y-%m-%d'), + e = enddate.strftime('%Y-%m-%d'), + firstname = firstname, + lastname = lastname, + name=name + ) + + return stri + + def save(self, *args, **kwargs): + if self.enddate < self.startdate: + startdate = self.startdate + enddate = self.enddate + self.startdate = enddate + self.enddate = startdate + + otherplans = TrainingPlan.objects.filter(rower=self.rower) + + for otherplan in otherplans: + if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate: + self.enddate = otherplan.startdate-datetime.timedelta(days=1) + if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate: + self.startdate = otherplan.enddate+datetime.timedelta(days=1) + + print self.startdate,self.enddate + + if not self.enddate <= self.startdate: + super(TrainingPlan,self).save(*args, **kwargs) + class TrainingPlanForm(ModelForm): class Meta: model = TrainingPlan