changement de l'affichage des tryouts et des matchs
This commit is contained in:
+41
-39
@@ -14,7 +14,7 @@ tryouts_bp = Blueprint('tryouts', __name__, url_prefix='/tryouts')
|
||||
|
||||
def can_manage():
|
||||
"""Check if current user can manage tryouts.
|
||||
|
||||
|
||||
Returns:
|
||||
bool: True if user is president or manager.
|
||||
"""
|
||||
@@ -25,13 +25,13 @@ def can_manage():
|
||||
@login_required
|
||||
def list_tryouts():
|
||||
"""List all tryouts visible to the current user.
|
||||
|
||||
|
||||
Shows tryouts filtered by user's role:
|
||||
- President: All tryouts
|
||||
- Manager: Only their created tryouts
|
||||
- Coach: Tryouts targeting their org team
|
||||
- Player: Upcoming and in-progress tryouts
|
||||
|
||||
- Player: Only tryouts they are registered for or participating in
|
||||
|
||||
Returns:
|
||||
Response: Rendered tryouts list template.
|
||||
"""
|
||||
@@ -47,7 +47,9 @@ def list_tryouts():
|
||||
else:
|
||||
tryouts = []
|
||||
elif current_user.role == 'player':
|
||||
tryouts = Tryout.query.filter(Tryout.status.in_(['upcoming', 'in_progress'])).order_by(Tryout.date.desc()).all()
|
||||
# Players only see tryouts they are registered for or participating in matches
|
||||
from routes.matches import get_visible_tryouts_for_user
|
||||
tryouts = get_visible_tryouts_for_user()
|
||||
else:
|
||||
tryouts = Tryout.query.order_by(Tryout.date.desc()).all()
|
||||
return render_template('pages/tryouts.html', tryouts=tryouts, now=datetime.utcnow())
|
||||
@@ -57,12 +59,12 @@ def list_tryouts():
|
||||
@login_required
|
||||
def create_tryout():
|
||||
"""Create a new tryout event.
|
||||
|
||||
|
||||
GET: Render the tryout creation form.
|
||||
POST: Create a tryout with the submitted details.
|
||||
|
||||
|
||||
Requires president or manager role.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Create form or redirect to the new tryout.
|
||||
"""
|
||||
@@ -110,15 +112,15 @@ def create_tryout():
|
||||
@login_required
|
||||
def edit_tryout(tryout_id):
|
||||
"""Edit an existing tryout event.
|
||||
|
||||
|
||||
GET: Render the tryout edit form with current data.
|
||||
POST: Update the tryout with submitted changes.
|
||||
|
||||
|
||||
Permission based on can_manage_this_tryout check.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout to edit.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Edit form or redirect to tryout view.
|
||||
"""
|
||||
@@ -164,18 +166,18 @@ def edit_tryout(tryout_id):
|
||||
@login_required
|
||||
def view_tryout(tryout_id):
|
||||
"""View a specific tryout with all details.
|
||||
|
||||
|
||||
Displays tryout information, registered players, evaluations, teams,
|
||||
matches, and evaluation status information.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout to view.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Rendered tryout detail template.
|
||||
"""
|
||||
tryout = Tryout.query.get_or_404(tryout_id)
|
||||
|
||||
|
||||
# Check if user has permission to view this tryout
|
||||
can_view = False
|
||||
if current_user.role == 'president':
|
||||
@@ -197,11 +199,11 @@ def view_tryout(tryout_id):
|
||||
can_view = is_registered or player_in_match
|
||||
elif current_user.role == 'scout':
|
||||
can_view = True
|
||||
|
||||
|
||||
if not can_view:
|
||||
flash('You do not have permission to view this tryout.', 'danger')
|
||||
return redirect(url_for('tryouts.list_tryouts'))
|
||||
|
||||
|
||||
registrations = TryoutRegistration.query.filter_by(tryout_id=tryout_id).all()
|
||||
registered_players = [User.query.get(r.player_id) for r in registrations if r.player_id]
|
||||
evaluations = Evaluation.query.filter_by(tryout_id=tryout_id).all()
|
||||
@@ -235,7 +237,7 @@ def view_tryout(tryout_id):
|
||||
|
||||
# Determine if current user can edit this tryout
|
||||
can_edit = current_user.can_manage_this_tryout(tryout)
|
||||
|
||||
|
||||
# Determine if current user can view the calendar (managers/coaches can always see it)
|
||||
# Players need to be registered or participating in a match
|
||||
can_view_calendar = can_edit
|
||||
@@ -245,16 +247,16 @@ def view_tryout(tryout_id):
|
||||
MatchParticipant.player_id == current_user.id,
|
||||
Match.tryout_id == tryout_id
|
||||
).first() is not None
|
||||
|
||||
|
||||
can_view_calendar = is_registered or player_in_match
|
||||
|
||||
# Only expose all_players to users who can manage players in this tryout
|
||||
all_players = None
|
||||
if can_edit:
|
||||
all_players = User.query.filter_by(role='player').order_by(User.full_name).all()
|
||||
|
||||
|
||||
# Get matches for this tryout with participant info
|
||||
matches = Match.query.filter_by(tryout_id=tryout_id).order_by(Match.date).all()
|
||||
matches = Match.query.filter_by(tryout_id=tryout_id).order_by(Match.date, Match.start_time).all()
|
||||
match_data = []
|
||||
for match in matches:
|
||||
if match.match_type == 'team_vs_team':
|
||||
@@ -279,7 +281,7 @@ def view_tryout(tryout_id):
|
||||
'match': match,
|
||||
'participants': participants
|
||||
})
|
||||
|
||||
|
||||
return render_template('pages/view_tryout.html',
|
||||
tryout=tryout,
|
||||
registered_players=registered_players,
|
||||
@@ -301,13 +303,13 @@ def view_tryout(tryout_id):
|
||||
@login_required
|
||||
def register_for_tryout(tryout_id):
|
||||
"""Register a player for a tryout.
|
||||
|
||||
|
||||
Allows players to register for tryouts. Validates that the tryout
|
||||
is accepting registrations and not at capacity.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout to register for.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Redirect to tryout view with status message.
|
||||
"""
|
||||
@@ -342,12 +344,12 @@ def register_for_tryout(tryout_id):
|
||||
@login_required
|
||||
def update_status(tryout_id):
|
||||
"""Update the status of a tryout.
|
||||
|
||||
|
||||
Changes tryout status between upcoming, in_progress, and completed.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout to update.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Redirect to tryout view.
|
||||
"""
|
||||
@@ -367,11 +369,11 @@ def update_status(tryout_id):
|
||||
@login_required
|
||||
def update_registration_status(tryout_id, player_id):
|
||||
"""Update the attendance status of a tryout registration.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout.
|
||||
player_id: The ID of the player whose status to update.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Redirect to tryout view.
|
||||
"""
|
||||
@@ -393,12 +395,12 @@ def update_registration_status(tryout_id, player_id):
|
||||
@login_required
|
||||
def register_player(tryout_id):
|
||||
"""Manually register a player for a tryout (by managers/coaches).
|
||||
|
||||
|
||||
Allows authorized users to register players on their behalf.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Redirect to tryout view with status message.
|
||||
"""
|
||||
@@ -439,10 +441,10 @@ def register_player(tryout_id):
|
||||
@login_required
|
||||
def create_team(tryout_id):
|
||||
"""Create a tryout-specific team.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout to create the team for.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Redirect to tryout view with status message.
|
||||
"""
|
||||
@@ -464,11 +466,11 @@ def create_team(tryout_id):
|
||||
@login_required
|
||||
def add_to_team(tryout_id, team_id):
|
||||
"""Add a player to a tryout team.
|
||||
|
||||
|
||||
Args:
|
||||
tryout_id: The ID of the tryout.
|
||||
team_id: The ID of the team to add the player to.
|
||||
|
||||
|
||||
Returns:
|
||||
Response: Redirect to tryout view with status message.
|
||||
"""
|
||||
@@ -490,4 +492,4 @@ def add_to_team(tryout_id, team_id):
|
||||
db.session.commit()
|
||||
flash('Player added to team!', 'success')
|
||||
|
||||
return redirect(url_for('tryouts.view_tryout', tryout_id=tryout_id))
|
||||
return redirect(url_for('tryouts.view_tryout', tryout_id=tryout_id))
|
||||
|
||||
Reference in New Issue
Block a user