Private
Public Access
1
0

first cut

This commit is contained in:
Sander Roosendaal
2018-10-29 16:33:55 +01:00
parent 30c0ea6946
commit ada4cdb225
3 changed files with 58 additions and 34 deletions

View File

@@ -983,9 +983,18 @@ class TrainingTargetForm(ModelForm):
class TrainingPlan(models.Model):
rower = models.ForeignKey(Rower,related_name='planathlete')
statuschoices = (
('active','active'),
('deactivated','inactive'),
)
# rower field is obsolete. Use rowers
rower = models.ForeignKey(Rower,related_name='planathlete',null=True)
rowers = models.ManyToManyField(Rower,related_name='planathletes')
manager = models.ForeignKey(Rower,related_name='planmanager',null=True)
name = models.CharField(max_length=150,blank=True)
name = models.CharField(max_length=150,blank=True)
status = models.CharField(max_length=150,default='active',choices=statuschoices)
target = models.ForeignKey(TrainingTarget,blank=True,null=True)
startdate = models.DateField(default=timezone.now)
enddate = models.DateField(
@@ -995,10 +1004,10 @@ class TrainingPlan(models.Model):
name = self.name
startdate = self.startdate
enddate = self.enddate
firstname = self.rower.user.first_name
lastname = self.rower.user.last_name
firstname = self.manager.user.first_name
lastname = self.manager.user.last_name
stri = u'Training Plan for {firstname} {lastname} {s} - {e}: {name}'.format(
stri = u'Training Plan by {firstname} {lastname} {s} - {e}: {name}'.format(
s = startdate.strftime('%Y-%m-%d'),
e = enddate.strftime('%Y-%m-%d'),
firstname = firstname,
@@ -1014,18 +1023,27 @@ class TrainingPlan(models.Model):
enddate = self.enddate
self.startdate = enddate
self.enddate = startdate
otherplans = TrainingPlan.objects.filter(rower=self.rower).exclude(pk=self.pk).order_by("-startdate")
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)
if self.status == 'active':
otherplans = TrainingPlan.objects.filter(
rower=self.rower,
status='active').exclude(pk=self.pk).order_by("-startdate")
for otherplan in otherplans:
if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate:
self.status = 'deactivated'
if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate:
self.status = 'deactivated'
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)
if not macrocycles:
m = TrainingMacroCycle(
@@ -1043,7 +1061,7 @@ class TrainingPlan(models.Model):
class TrainingPlanForm(ModelForm):
class Meta:
model = TrainingPlan
fields = ['name','target','startdate','enddate']
fields = ['name','target','startdate','enddate','status']
widgets = {
'startdate': AdminDateWidget(),