Files
gesthub/web/routes/evenements.py
2026-08-21 09:12:02 +02:00

45 lines
1.3 KiB
Python

"""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("/<int:evenement_id>", 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"})