modification des permissions de coach: Voit uniquement les tryouts de ses équipes.

Evaluer un joueur retourne à la page précédente au lieu de la page des evaluations
This commit is contained in:
cedrick2711
2026-07-14 12:38:57 -04:00
parent 4fd27bacfd
commit acb9bc3256
16 changed files with 56 additions and 50 deletions
+14 -30
View File
@@ -74,17 +74,8 @@ def create_tryout():
def edit_tryout(tryout_id):
tryout = Tryout.query.get_or_404(tryout_id)
# Permission: president can edit any; manager can edit own; coach can edit if it targets their team
if current_user.role == 'president':
pass # allowed
elif current_user.role == 'manager' and tryout.created_by == current_user.id:
pass # allowed
elif current_user.role == 'coach':
org_team = OrgTeam.query.filter_by(coach_id=current_user.id).first()
if not org_team or tryout.target_org_team_id != org_team.id:
flash('You do not have permission to edit this tryout.', 'danger')
return redirect(url_for('tryouts.list_tryouts'))
else:
# Permission: president, manager (own tryouts), or coach (targets their team)
if not current_user.can_manage_this_tryout(tryout):
flash('You do not have permission to edit this tryout.', 'danger')
return redirect(url_for('tryouts.list_tryouts'))
@@ -152,15 +143,7 @@ def view_tryout(tryout_id):
})
# Determine if current user can edit this tryout
can_edit = False
if current_user.role == 'president':
can_edit = True
elif current_user.role == 'manager' and tryout.created_by == current_user.id:
can_edit = True
elif current_user.role == 'coach':
org_team = OrgTeam.query.filter_by(coach_id=current_user.id).first()
if org_team and tryout.target_org_team_id == org_team.id:
can_edit = True
can_edit = current_user.can_manage_this_tryout(tryout)
# Get all players (for manager registration dropdown)
all_players = User.query.filter_by(role='player').order_by(User.full_name).all()
@@ -209,11 +192,10 @@ def register_for_tryout(tryout_id):
@tryouts_bp.route('/<int:tryout_id>/status', methods=['POST'])
@login_required
def update_status(tryout_id):
if not can_manage():
tryout = Tryout.query.get_or_404(tryout_id)
if not current_user.can_manage_this_tryout(tryout):
flash('Permission denied.', 'danger')
return redirect(url_for('tryouts.list_tryouts'))
tryout = Tryout.query.get_or_404(tryout_id)
new_status = request.form.get('status')
if new_status in ['upcoming', 'in_progress', 'completed']:
tryout.status = new_status
@@ -224,7 +206,8 @@ def update_status(tryout_id):
@tryouts_bp.route('/<int:tryout_id>/registration/<int:player_id>/status', methods=['POST'])
@login_required
def update_registration_status(tryout_id, player_id):
if not can_manage():
tryout = Tryout.query.get_or_404(tryout_id)
if not current_user.can_manage_this_tryout(tryout):
flash('Permission denied.', 'danger')
return redirect(url_for('tryouts.list_tryouts'))
@@ -239,11 +222,10 @@ def update_registration_status(tryout_id, player_id):
@tryouts_bp.route('/<int:tryout_id>/register_player', methods=['POST'])
@login_required
def register_player(tryout_id):
if not can_manage():
tryout = Tryout.query.get_or_404(tryout_id)
if not current_user.can_manage_this_tryout(tryout):
flash('Permission denied.', 'danger')
return redirect(url_for('tryouts.view_tryout', tryout_id=tryout_id))
tryout = Tryout.query.get_or_404(tryout_id)
player_id = request.form.get('player_id')
if not player_id:
@@ -275,7 +257,8 @@ def register_player(tryout_id):
@tryouts_bp.route('/<int:tryout_id>/team/create', methods=['POST'])
@login_required
def create_team(tryout_id):
if not can_manage():
tryout = Tryout.query.get_or_404(tryout_id)
if not current_user.can_manage_this_tryout(tryout):
flash('Permission denied.', 'danger')
return redirect(url_for('tryouts.view_tryout', tryout_id=tryout_id))
@@ -290,13 +273,14 @@ def create_team(tryout_id):
@tryouts_bp.route('/<int:tryout_id>/team/<int:team_id>/add', methods=['POST'])
@login_required
def add_to_team(tryout_id, team_id):
if not can_manage():
team = Team.query.get_or_404(team_id)
tryout = Tryout.query.get_or_404(tryout_id)
if not current_user.can_manage_this_tryout(tryout):
flash('Permission denied.', 'danger')
return redirect(url_for('tryouts.view_tryout', tryout_id=tryout_id))
player_id = request.form.get('player_id')
position = request.form.get('position', '')
team = Team.query.get_or_404(team_id)
existing = TeamMember.query.filter_by(team_id=team_id, player_id=player_id).first()
if existing: