""" Main Blueprint - Dashboard and Home Routes """ from flask import Blueprint, render_template, redirect, url_for from flask_login import login_required, current_user from extensions import db, cache from models.player import Player from models.group import Group from utils.logger import get_recent_logs main_bp = Blueprint('main', __name__) @main_bp.route('/') @login_required @cache.cached(timeout=60, unless=lambda: current_user.role != 'viewer') def dashboard(): """Main dashboard page""" players = Player.query.all() groups = Group.query.all() server_logs = get_recent_logs(20) return render_template( 'dashboard.html', players=players, groups=groups, server_logs=server_logs ) @main_bp.route('/health') def health(): """Health check endpoint""" from flask import jsonify import os try: # Check database db.session.execute(db.text('SELECT 1')) # Check disk space upload_folder = os.path.join( main_bp.root_path or '.', 'static/uploads' ) if os.path.exists(upload_folder): stat = os.statvfs(upload_folder) free_space_gb = (stat.f_bavail * stat.f_frsize) / (1024**3) else: free_space_gb = 0 return jsonify({ 'status': 'healthy', 'database': 'ok', 'disk_space_gb': round(free_space_gb, 2) }), 200 except Exception as e: return jsonify({ 'status': 'unhealthy', 'error': str(e) }), 500