first cut
This commit is contained in:
@@ -983,9 +983,18 @@ class TrainingTargetForm(ModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class TrainingPlan(models.Model):
|
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)
|
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)
|
target = models.ForeignKey(TrainingTarget,blank=True,null=True)
|
||||||
startdate = models.DateField(default=timezone.now)
|
startdate = models.DateField(default=timezone.now)
|
||||||
enddate = models.DateField(
|
enddate = models.DateField(
|
||||||
@@ -995,10 +1004,10 @@ class TrainingPlan(models.Model):
|
|||||||
name = self.name
|
name = self.name
|
||||||
startdate = self.startdate
|
startdate = self.startdate
|
||||||
enddate = self.enddate
|
enddate = self.enddate
|
||||||
firstname = self.rower.user.first_name
|
firstname = self.manager.user.first_name
|
||||||
lastname = self.rower.user.last_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'),
|
s = startdate.strftime('%Y-%m-%d'),
|
||||||
e = enddate.strftime('%Y-%m-%d'),
|
e = enddate.strftime('%Y-%m-%d'),
|
||||||
firstname = firstname,
|
firstname = firstname,
|
||||||
@@ -1015,17 +1024,26 @@ class TrainingPlan(models.Model):
|
|||||||
self.startdate = enddate
|
self.startdate = enddate
|
||||||
self.enddate = startdate
|
self.enddate = startdate
|
||||||
|
|
||||||
otherplans = TrainingPlan.objects.filter(rower=self.rower).exclude(pk=self.pk).order_by("-startdate")
|
if self.status == 'active':
|
||||||
|
otherplans = TrainingPlan.objects.filter(
|
||||||
|
rower=self.rower,
|
||||||
|
status='active').exclude(pk=self.pk).order_by("-startdate")
|
||||||
|
|
||||||
for otherplan in otherplans:
|
for otherplan in otherplans:
|
||||||
if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate:
|
if otherplan.startdate <= self.enddate and otherplan.startdate >= self.startdate:
|
||||||
self.enddate = otherplan.startdate-datetime.timedelta(days=1)
|
self.status = 'deactivated'
|
||||||
if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate:
|
if otherplan.enddate >= self.startdate and otherplan.enddate <= self.enddate:
|
||||||
self.startdate = otherplan.enddate+datetime.timedelta(days=1)
|
self.status = 'deactivated'
|
||||||
|
|
||||||
if not self.enddate <= self.startdate:
|
if not self.enddate <= self.startdate:
|
||||||
super(TrainingPlan,self).save(*args, **kwargs)
|
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)
|
macrocycles = TrainingMacroCycle.objects.filter(plan = self)
|
||||||
if not macrocycles:
|
if not macrocycles:
|
||||||
m = TrainingMacroCycle(
|
m = TrainingMacroCycle(
|
||||||
@@ -1043,7 +1061,7 @@ class TrainingPlan(models.Model):
|
|||||||
class TrainingPlanForm(ModelForm):
|
class TrainingPlanForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TrainingPlan
|
model = TrainingPlan
|
||||||
fields = ['name','target','startdate','enddate']
|
fields = ['name','target','startdate','enddate','status']
|
||||||
|
|
||||||
widgets = {
|
widgets = {
|
||||||
'startdate': AdminDateWidget(),
|
'startdate': AdminDateWidget(),
|
||||||
|
|||||||
@@ -62,6 +62,7 @@
|
|||||||
<th> Start Date</th>
|
<th> Start Date</th>
|
||||||
<th> End Date</th>
|
<th> End Date</th>
|
||||||
<th> Name</th>
|
<th> Name</th>
|
||||||
|
<th> Status</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -70,6 +71,7 @@
|
|||||||
<td> {{ plan.startdate }} </td>
|
<td> {{ plan.startdate }} </td>
|
||||||
<td> {{ plan.enddate }}</td>
|
<td> {{ plan.enddate }}</td>
|
||||||
<td><a href="/rowers/plan/{{ plan.id }}">{{ plan.name }}</a></td>
|
<td><a href="/rowers/plan/{{ plan.id }}">{{ plan.name }}</a></td>
|
||||||
|
<td> {{ plan.status }}</td>
|
||||||
<td> <a href="/rowers/editplan/{{ plan.id }}">Edit</a></td>
|
<td> <a href="/rowers/editplan/{{ plan.id }}">Edit</a></td>
|
||||||
<td> <a href="/rowers/plan/{{ plan.id }}">Plan</a></td>
|
<td> <a href="/rowers/plan/{{ plan.id }}">Plan</a></td>
|
||||||
<td> <a href="/rowers/deleteplan/{{ plan.id }}">Delete</a></td>
|
<td> <a href="/rowers/deleteplan/{{ plan.id }}">Delete</a></td>
|
||||||
|
|||||||
@@ -14032,7 +14032,7 @@ def plannedsession_multiclone_view(
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14178,7 +14178,7 @@ def plannedsession_create_view(request,
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14211,7 +14211,7 @@ def plannedsession_multicreate_view(request,
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14468,7 +14468,7 @@ def plannedsession_teamedit_view(request,
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14702,7 +14702,7 @@ def plannedsessions_view(request,
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14765,7 +14765,7 @@ def plannedsessions_print_view(request,userid=0):
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14807,7 +14807,7 @@ def plannedsessions_manage_view(request,userid=0,
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -14961,7 +14961,7 @@ def plannedsession_clone_view(request,id=0,userid=0):
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -15026,7 +15026,7 @@ def plannedsession_edit_view(request,id=0,userid=0):
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -15243,7 +15243,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
try:
|
try:
|
||||||
trainingplan = TrainingPlan.objects.filter(
|
trainingplan = TrainingPlan.objects.filter(
|
||||||
startdate__lte = startdate,
|
startdate__lte = startdate,
|
||||||
rower = r,
|
rowers = r,
|
||||||
enddate__gte = enddate)[0]
|
enddate__gte = enddate)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
trainingplan = None
|
trainingplan = None
|
||||||
@@ -16156,7 +16156,7 @@ def rower_create_trainingplan(request,userid=0):
|
|||||||
date = targetform.cleaned_data['date']
|
date = targetform.cleaned_data['date']
|
||||||
notes = targetform.cleaned_data['notes']
|
notes = targetform.cleaned_data['notes']
|
||||||
|
|
||||||
t = TrainingTarget(rower=therower,
|
t = TrainingTarget(rowers=[therower],
|
||||||
name=name,
|
name=name,
|
||||||
date=date,
|
date=date,
|
||||||
manager=themanager,
|
manager=themanager,
|
||||||
@@ -16189,6 +16189,10 @@ def rower_create_trainingplan(request,userid=0):
|
|||||||
targetform = TrainingTargetForm()
|
targetform = TrainingTargetForm()
|
||||||
|
|
||||||
plans = TrainingPlan.objects.filter(rower=therower).order_by("-startdate")
|
plans = TrainingPlan.objects.filter(rower=therower).order_by("-startdate")
|
||||||
|
plans2 = TrainingPlan.objects.filter(rowers=therower).order_by("-startdate")
|
||||||
|
|
||||||
|
plans = plans | plans2
|
||||||
|
|
||||||
form = TrainingPlanForm(targets=targets)
|
form = TrainingPlanForm(targets=targets)
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
@@ -16564,12 +16568,16 @@ def rower_trainingplan_view(request,
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
plan = TrainingPlan.objects.get(id=id)
|
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:
|
except TrainingPlan.DoesNotExist:
|
||||||
raise Http404("Training Plan Does Not Exist")
|
raise Http404("Training Plan Does Not Exist")
|
||||||
|
|
||||||
r = getrequestrower(request,userid=userid)
|
r = getrequestrower(request,userid=userid)
|
||||||
|
|
||||||
if not checkaccessuser(request.user,plan.rower):
|
if not checkaccessuser(request.user,plan.manager):
|
||||||
raise PermissionDenied("Access denied")
|
raise PermissionDenied("Access denied")
|
||||||
|
|
||||||
createmacrofillers(plan)
|
createmacrofillers(plan)
|
||||||
@@ -16677,8 +16685,6 @@ def rower_trainingplan_view(request,
|
|||||||
count = 0
|
count = 0
|
||||||
cycles = {}
|
cycles = {}
|
||||||
|
|
||||||
r = plan.rower
|
|
||||||
|
|
||||||
for m in macrocycles:
|
for m in macrocycles:
|
||||||
createmesofillers(m)
|
createmesofillers(m)
|
||||||
mesocycles = TrainingMesoCycle.objects.filter(plan=m).order_by("startdate")
|
mesocycles = TrainingMesoCycle.objects.filter(plan=m).order_by("startdate")
|
||||||
@@ -16787,7 +16793,7 @@ class TrainingMacroCycleUpdate(UpdateView):
|
|||||||
if obj.plan.manager is not None and self.request.user.rower != 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')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
|
|
||||||
if not checkaccessuser(self.request.user,obj.plan.rower):
|
if not checkaccessuser(self.request.user,obj.plan.manager):
|
||||||
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
else:
|
else:
|
||||||
obj.type = 'userdefined'
|
obj.type = 'userdefined'
|
||||||
@@ -16862,7 +16868,7 @@ class TrainingMesoCycleUpdate(UpdateView):
|
|||||||
if obj.plan.plan.manager is not None and self.request.user.rower != 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')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
|
|
||||||
if not checkaccessuser(self.request.user,r):
|
if r is not None and not checkaccessuser(self.request.user,r):
|
||||||
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
else:
|
else:
|
||||||
obj.type = 'userdefined'
|
obj.type = 'userdefined'
|
||||||
@@ -16943,7 +16949,7 @@ class TrainingMicroCycleUpdate(UpdateView):
|
|||||||
if obj.plan.plan.plan.manager is not None and self.request.user.rower != obj.plan.plan.plan.manager:
|
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')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
|
|
||||||
if not checkaccessuser(self.request.user,r):
|
if r is not None and not checkaccessuser(self.request.user,r):
|
||||||
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
else:
|
else:
|
||||||
obj.type = 'userdefined'
|
obj.type = 'userdefined'
|
||||||
@@ -17006,11 +17012,9 @@ class TrainingPlanUpdate(UpdateView):
|
|||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(TrainingPlanUpdate, self).get_object(*args, **kwargs)
|
obj = super(TrainingPlanUpdate, self).get_object(*args, **kwargs)
|
||||||
if obj.manager is not None and self.request.user.rower != obj.manager.user:
|
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')
|
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 cycle')
|
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
class TrainingTargetUpdate(UpdateView):
|
class TrainingTargetUpdate(UpdateView):
|
||||||
@@ -17029,7 +17033,7 @@ class TrainingTargetUpdate(UpdateView):
|
|||||||
|
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super(TrainingTargetUpdate, self).get_object(*args, **kwargs)
|
obj = super(TrainingTargetUpdate, self).get_object(*args, **kwargs)
|
||||||
if obj.manager is not None and self.request.user.rower != obj.manager.user:
|
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')
|
raise PermissionDenied('You are not allowed to edit this training plan cycle')
|
||||||
|
|
||||||
if not checkaccessuser(self.request.user,obj.rower):
|
if not checkaccessuser(self.request.user,obj.rower):
|
||||||
|
|||||||
Reference in New Issue
Block a user