diff --git a/rowers/models.py b/rowers/models.py index 1db6d745..b5326f42 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -973,18 +973,24 @@ class TrainingTargetForm(ModelForm): } def __init__(self,*args, **kwargs): + user = kwargs.pop('user',None) super(TrainingTargetForm, self).__init__(*args, **kwargs) try: teams = Team.objects.filter(manager=self.instance.manager.user) - 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: + if user: + teams = Team.objects.filter(manager=user) + else: + teams = [] + + 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") + # SportTracks has a TrainingGoal like this @@ -1095,6 +1101,7 @@ class TrainingPlanForm(ModelForm): def __init__(self,*args, **kwargs): targets = kwargs.pop('targets',None) + user = kwargs.pop('user',None) super(TrainingPlanForm, self).__init__(*args, **kwargs) if targets: @@ -1110,15 +1117,18 @@ class TrainingPlanForm(ModelForm): try: teams = Team.objects.filter(manager=self.instance.manager.user) - - 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: + if user: + teams = Team.objects.filter(manager=user) + else: + teams = [] + + 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") cycletypechoices = ( ('filler','System Defined'), diff --git a/rowers/views.py b/rowers/views.py index 75754ac2..cc854b2a 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -16263,7 +16263,7 @@ def rower_create_trainingplan(request,userid=0): themanager = getrower(request.user) if request.method == 'POST' and 'date' in request.POST: - targetform = TrainingTargetForm(request.POST) + targetform = TrainingTargetForm(request.POST,user=request.user) if targetform.is_valid(): name = targetform.cleaned_data['name'] date = targetform.cleaned_data['date'] @@ -16281,22 +16281,26 @@ def rower_create_trainingplan(request,userid=0): t.save() elif request.method == 'POST' and 'startdate' in request.POST: - form = TrainingPlanForm(request.POST) + form = TrainingPlanForm(request.POST,user=request.user) if form.is_valid(): - name = form.cleaned_data['name'] try: target = form.cleaned_data['target'] except KeyError: try: targetid = request.POST['target'] - target = TrainingTarget.objects.get(id=targetid) + if targetid != '': + target = TrainingTarget.objects.get(id=int(targetid)) + else: + target = None except KeyError: target = None startdate = form.cleaned_data['startdate'] enddate = form.cleaned_data['enddate'] + + athletes = form.cleaned_data['rowers'] p = TrainingPlan( name=name, @@ -16307,20 +16311,23 @@ def rower_create_trainingplan(request,userid=0): ) p.save() - - p.rowers.add(therower) + + for athlete in athletes: + p.rowers.add(athlete) targets = TrainingTarget.objects.filter( rowers=therower, date__gte=datetime.date.today(), ).order_by("date") - targetform = TrainingTargetForm() + targetform = TrainingTargetForm(user=request.user) plans = TrainingPlan.objects.filter(rowers=therower).order_by("-startdate") - form = TrainingPlanForm(targets=targets,initial={'status':False}) + form = TrainingPlanForm(targets=targets, + initial={'status':False,'rowers':[therower]}, + user=request.user) breadcrumbs = [ {