diff --git a/rowers/models.py b/rowers/models.py index 21f3ae10..7f50af9f 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -914,7 +914,7 @@ def check_teams_on_change(sender, **kwargs): team = Team.objects.get(id=id) if team.manager.rower.rowerplan not in ['coach']: raise ValidationError( - "You cannot join a team led by a Pro or Self-Coach user" + "You cannot join a team led by a Pro, Free Coach Plan or Self-Coach user" ) m2m_changed.connect(check_teams_on_change, sender=Rower.team.through) @@ -1075,7 +1075,7 @@ def checkaccessplanuser(user,rower): r = Rower.objects.get(user=user) if rower == r: return True - team_managers = [t.manager for t in rower.team.all() if t.manager.rower.rowerplan in ['plan','coach']] + team_managers = [t.manager for t in rower.team.all() if t.manager.rower.rowerplan in ['plan','coach','freecoach']] if user.rower.rowerplan != 'basic': return user in team_managers else: @@ -3271,7 +3271,7 @@ class AccountRowerForm(ModelForm): def __init__(self, *args, **kwargs): super(AccountRowerForm, self).__init__(*args, **kwargs) - if self.instance.rowerplan != 'coach': + if 'coach' not in self.instance.rowerplan: self.fields.pop('offercoaching') diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index a455213c..e397e498 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -904,7 +904,7 @@ def plannedsessions_coach_view(request, else: theteam = False - if request.user.rower.rowerplan == 'coach': + if 'coach' in request.user.rower.rowerplan: sps = get_sessions_manager(request.user,teamid=teamid, enddate=enddate, startdate=startdate) @@ -914,7 +914,7 @@ def plannedsessions_coach_view(request, rowers = [therower] for ps in sps: - if request.user.rower.rowerplan == 'coach': + if 'coach' in request.user.rower.rowerplan: rowers += ps.rower.all() else: rowers += ps.rower.filter(team__in=rteams) @@ -1569,7 +1569,7 @@ def plannedsession_view(request,id=0,userid=0): mm = Rower.objects.get(user=m) if ps.manager != request.user: - if r.rowerplan == 'coach' and r not in ps.rower.all(): + if 'coach' in r.rowerplan and r not in ps.rower.all(): teams = Team.objects.filter(manager=request.user) members = Rower.objects.filter(team__in=teams).distinct() teamusers = [m.user for m in members] @@ -1808,6 +1808,10 @@ def rower_create_trainingplan(request,userid=0): name = targetform.cleaned_data['name'] date = targetform.cleaned_data['date'] notes = targetform.cleaned_data['notes'] + try: + rowers = targetform.cleaned_data['rowers'] + except KeyError: + rowers = [therower] t = TrainingTarget( name=name, @@ -1817,7 +1821,8 @@ def rower_create_trainingplan(request,userid=0): t.save() - t.rowers.add(therower) + for athlete in rowers: + t.rowers.add(athlete) t.save() elif request.method == 'POST' and 'startdate' in request.POST: @@ -2589,7 +2594,7 @@ class TrainingPlanUpdate(UpdateView): obj = super(TrainingPlanUpdate, self).get_object(*args, **kwargs) 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') - if obj.manager.rowerplan not in ['coach','plan']: + if obj.manager.rowerplan not in ['coach','freecoach','plan']: raise PermissionDenied('You are not allowed to edit this training plan') return obj