""" Training Routes - GMAO Collège Gestion des formations """ from flask import Blueprint, render_template, request, flash, redirect, url_for from flask_login import login_required, current_user from app_new.extensions import db from ..core.models.planning import Training, TrainingParticipant training_bp = Blueprint('trainings', __name__) @training_bp.route('/') @login_required def index(): """Liste des formations.""" trainings = Training.query.order_by(Training.start_date).all() return render_template('training/index.html', trainings=trainings) @training_bp.route('/new', methods=['GET', 'POST']) @login_required def create(): """Créer une formation.""" if request.method == 'POST': training = Training( title=request.form.get('title'), description=request.form.get('description'), start_date=request.form.get('start_date'), end_date=request.form.get('end_date'), location=request.form.get('location'), max_participants=request.form.get('max_participants', 10) ) db.session.add(training) db.session.commit() flash('Formation créée avec succès.', 'success') return redirect(url_for('trainings.index')) return render_template('training/new.html') @training_bp.route('//register', methods=['POST']) @login_required def register(id): """S'inscrire à une formation.""" training = Training.query.get_or_404(id) participant = TrainingParticipant.query.filter_by( training_id=id, user_id=current_user.id ).first() if participant: flash('Déjà inscrit.', 'warning') else: participant = TrainingParticipant( training_id=id, user_id=current_user.id, status='inscrit' ) db.session.add(participant) db.session.commit() flash('Inscription réussie.', 'success') return redirect(url_for('trainings.index')) @training_bp.route('/my-trainings') @login_required def my_trainings(): """Mes formations.""" participations = TrainingParticipant.query.filter_by(user_id=current_user.id).all() return render_template('training/my_trainings.html', participations=participations)