Ajout d'une catégorie jeux dans le tryouts, chacun des jeux offre des rôles différents pour les membres d'équipes. Remodelage du code un peu et ajout de docu
This commit is contained in:
+30
-7
@@ -1,3 +1,8 @@
|
||||
"""Main dashboard routes for the Team Tryouts application.
|
||||
|
||||
This module provides the main dashboard view with role-specific statistics.
|
||||
"""
|
||||
|
||||
from flask import Blueprint, render_template, redirect, url_for, flash
|
||||
from flask_login import login_required, current_user
|
||||
from extensions import db
|
||||
@@ -7,13 +12,34 @@ from datetime import datetime, date
|
||||
|
||||
main_bp = Blueprint('main', __name__)
|
||||
|
||||
|
||||
@main_bp.route('/')
|
||||
def index():
|
||||
"""Redirect root URL to login page.
|
||||
|
||||
This is the entry point for the application when no specific route is provided.
|
||||
|
||||
Returns:
|
||||
Response: Redirect to login page.
|
||||
"""
|
||||
return redirect(url_for('auth.login'))
|
||||
|
||||
|
||||
@main_bp.route('/dashboard')
|
||||
@login_required
|
||||
def dashboard():
|
||||
"""Render the main dashboard with role-specific statistics.
|
||||
|
||||
Displays different statistics based on the user's role:
|
||||
- President: Overview of all users, tryouts, and evaluations
|
||||
- Manager: Their created tryouts and evaluations
|
||||
- Coach: Their evaluations and pending evaluations
|
||||
- Player: Their registrations, evaluations, and upcoming matches
|
||||
- Scout: Top-rated players across all tryouts
|
||||
|
||||
Returns:
|
||||
Response: Rendered dashboard template with user stats.
|
||||
"""
|
||||
user = current_user
|
||||
stats = {}
|
||||
|
||||
@@ -23,9 +49,9 @@ def dashboard():
|
||||
stats['total_tryouts'] = Tryout.query.count()
|
||||
stats['total_evaluations'] = Evaluation.query.count()
|
||||
stats['active_tryouts'] = Tryout.query.filter_by(status='in_progress').count()
|
||||
stats['upcoming_tryouts'] = Tryout.query.filter_by(status='upcoming').count()
|
||||
stats['recent_users'] = User.query.order_by(User.created_at.desc()).limit(5).all()
|
||||
stats['recent_tryouts'] = Tryout.query.order_by(Tryout.created_at.desc()).limit(5).all()
|
||||
stats['completed_tryouts'] = Tryout.query.filter_by(status='completed').count()
|
||||
stats['recent_users'] = User.query.order_by(User.created_at.desc()).limit(10).all()
|
||||
stats['recent_tryouts'] = Tryout.query.order_by(Tryout.created_at.desc()).limit(10).all()
|
||||
|
||||
elif user.role == 'manager':
|
||||
stats['total_tryouts'] = Tryout.query.filter_by(created_by=user.id).count()
|
||||
@@ -40,14 +66,11 @@ def dashboard():
|
||||
registered_player_ids = [r.player_id for r in registrations]
|
||||
evaluated_player_ids = [e.player_id for e in Evaluation.query.filter_by(evaluator_id=user.id).all()]
|
||||
stats['pending_evaluations'] = len(set(registered_player_ids) - set(evaluated_player_ids))
|
||||
stats['my_recent_evaluations'] = Evaluation.query.filter_by(evaluator_id=user.id).order_by(Evaluation.created_at.desc()).limit(5).all()
|
||||
stats['my_recent_evaluations'] = Evaluation.query.filter_by(evaluator_id=user.id).order_by(Evaluation.created_at.desc()).limit(10).all()
|
||||
|
||||
elif user.role == 'player':
|
||||
stats['my_tryouts'] = TryoutRegistration.query.filter_by(player_id=user.id).count()
|
||||
stats['my_evaluations'] = Evaluation.query.filter_by(player_id=user.id).count()
|
||||
stats['average_score'] = db.session.query(func.avg(Evaluation.overall_score)).filter_by(player_id=user.id).scalar() or 0
|
||||
stats['my_registrations'] = TryoutRegistration.query.filter_by(player_id=user.id).order_by(TryoutRegistration.registered_at.desc()).limit(5).all()
|
||||
stats['my_eval_list'] = Evaluation.query.filter_by(player_id=user.id).order_by(Evaluation.created_at.desc()).limit(5).all()
|
||||
|
||||
# Get next match for each tryout the player is in
|
||||
today = date.today()
|
||||
|
||||
Reference in New Issue
Block a user