"""routes/evenements.py — API CRUD du module Planning (EXF-09, EXF-10).""" from flask import Blueprint, current_app, jsonify, request from services import evenement_service from services.auth_service import client_ip, current_user, require_admin, require_login bp = Blueprint("evenements", __name__, url_prefix="/api/evenements") def _db(): return current_app.config["DB"] @bp.route("", methods=["GET"]) @require_login def list_evenements(): return jsonify(evenement_service.list_evenements(_db())) @bp.route("", methods=["POST"]) @require_admin def create_evenement(): data = request.json or {} user = current_user() try: new_id = evenement_service.create_evenement( _db(), data.get("titre"), data.get("description"), data.get("date_debut"), data.get("date_fin"), user["sub"], client_ip(), ) except evenement_service.ValidationError as exc: return jsonify({"error": str(exc)}), 400 return jsonify({"id": new_id}), 201 @bp.route("/", methods=["DELETE"]) @require_admin def delete_evenement(evenement_id): user = current_user() try: evenement_service.delete_evenement(_db(), evenement_id, user["sub"], client_ip()) except LookupError as exc: return jsonify({"error": str(exc)}), 404 return jsonify({"status": "deleted"})