multiple athletes for plans and targets
This commit is contained in:
@@ -934,7 +934,9 @@ 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')
|
||||
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)
|
||||
name = models.CharField(max_length=150,blank=True)
|
||||
date = models.DateField(
|
||||
@@ -944,8 +946,12 @@ class TrainingTarget(models.Model):
|
||||
def __unicode__(self):
|
||||
date = self.date
|
||||
name = self.name
|
||||
ownerfirst = self.rower.user.first_name
|
||||
ownerlast = self.rower.user.last_name
|
||||
try:
|
||||
ownerfirst = self.manager.user.first_name
|
||||
ownerlast = self.manager.user.last_name
|
||||
except AttributeError:
|
||||
ownerfirst = ''
|
||||
ownerlast = ''
|
||||
|
||||
stri = u'{ownerfirst} {ownerlast} {d} {n}'.format(
|
||||
ownerfirst = ownerfirst,
|
||||
@@ -959,12 +965,24 @@ class TrainingTarget(models.Model):
|
||||
class TrainingTargetForm(ModelForm):
|
||||
class Meta:
|
||||
model = TrainingTarget
|
||||
fields = ['name','date','notes']
|
||||
fields = ['name','date','notes','rowers']
|
||||
|
||||
widgets = {
|
||||
'date': AdminDateWidget()
|
||||
}
|
||||
|
||||
def __init__(self,*args, **kwargs):
|
||||
super(TrainingTargetForm, self).__init__(*args, **kwargs)
|
||||
|
||||
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")
|
||||
except AttributeError:
|
||||
self.fields.pop('rowers')
|
||||
|
||||
|
||||
# SportTracks has a TrainingGoal like this
|
||||
#class TrainingGoal(models.Model):
|
||||
@@ -991,10 +1009,11 @@ class TrainingPlan(models.Model):
|
||||
|
||||
# rower field is obsolete. Use rowers
|
||||
rower = models.ForeignKey(Rower,related_name='planathlete',null=True)
|
||||
rowers = models.ManyToManyField(Rower,related_name='planathletes')
|
||||
rowers = models.ManyToManyField(Rower,related_name='planathletes',
|
||||
verbose_name='Athletes')
|
||||
manager = models.ForeignKey(Rower,related_name='planmanager',null=True)
|
||||
name = models.CharField(max_length=150,blank=True)
|
||||
status = models.CharField(max_length=150,default='active',choices=statuschoices)
|
||||
status = models.BooleanField(default=True,verbose_name='Active')
|
||||
target = models.ForeignKey(TrainingTarget,blank=True,null=True)
|
||||
startdate = models.DateField(default=timezone.now)
|
||||
enddate = models.DateField(
|
||||
@@ -1024,16 +1043,23 @@ class TrainingPlan(models.Model):
|
||||
self.startdate = enddate
|
||||
self.enddate = startdate
|
||||
|
||||
if self.status == 'active':
|
||||
if self.status:
|
||||
otherplans = TrainingPlan.objects.filter(
|
||||
rower=self.rower,
|
||||
status='active').exclude(pk=self.pk).order_by("-startdate")
|
||||
status=True).exclude(
|
||||
pk=self.pk).order_by(
|
||||
"-startdate")
|
||||
|
||||
for otherplan in otherplans:
|
||||
if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate:
|
||||
self.status = 'deactivated'
|
||||
for rower in self.rowers.all():
|
||||
if rower in otherplan.rowers.all():
|
||||
print otherplan
|
||||
self.status = False
|
||||
if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate:
|
||||
self.status = 'deactivated'
|
||||
for rower in self.rowers.all():
|
||||
if rower in otherplan.rowers.all():
|
||||
print otherplan
|
||||
self.status = False
|
||||
|
||||
if not self.enddate <= self.startdate:
|
||||
super(TrainingPlan,self).save(*args, **kwargs)
|
||||
@@ -1061,7 +1087,7 @@ class TrainingPlan(models.Model):
|
||||
class TrainingPlanForm(ModelForm):
|
||||
class Meta:
|
||||
model = TrainingPlan
|
||||
fields = ['name','target','startdate','enddate','status']
|
||||
fields = ['name','target','startdate','enddate','status','rowers']
|
||||
|
||||
widgets = {
|
||||
'startdate': AdminDateWidget(),
|
||||
@@ -1076,8 +1102,16 @@ class TrainingPlanForm(ModelForm):
|
||||
targetchoices = [(x.id,x) for x in targets]
|
||||
targetchoices.append((None,'---'))
|
||||
self.fields['target'].choices = targetchoices
|
||||
|
||||
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")
|
||||
except AttributeError:
|
||||
self.fields.pop('rowers')
|
||||
|
||||
|
||||
cycletypechoices = (
|
||||
('filler','System Defined'),
|
||||
('userdefined','User Defined')
|
||||
|
||||
Reference in New Issue
Block a user