gmao/app_new/training/routes.py

69 lines
2.2 KiB
Python
Raw Normal View History

2026-08-14 18:02:25 +02:00
"""
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('/<int:id>/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)