Files
Forge-Engine/routes/publish/xapi_settings.py
T
william f7a50e5afe
Build and deploy / test-python (push) Successful in 9m41s
Build and deploy / test-js (push) Successful in 51s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Ajoute un suivi xAPI optionnel (bolt-on) au paquet SCORM exporté
Greffe l'envoi de statements xAPI vers un LRS configurable par le
créateur du jeu, en parallèle du reporting SCORM existant : réglages
stockés en base (_meta), formulaire dans la modale d'export, injection
dans le paquet exporté. Relié aussi bien à l'action de flow "Modifier
un score/statut" qu'au parcours quête/quiz (qui alimentait déjà le
SCORM classique via un chemin séparé).

L'export ne se lance plus automatiquement à l'ouverture de la modale,
pour laisser le temps d'enregistrer les réglages xAPI avant de générer
le paquet.
2026-09-05 10:00:57 +02:00

34 lines
1.2 KiB
Python

from flask import jsonify, request
import db
from core.flask_app import app
@app.route("/game/<slug>/xapi-settings", methods=["GET"])
def xapi_settings_get(slug):
"""Réglages xAPI de ce jeu (voir db/games/get_xapi_settings.py) —
jamais le mot de passe en clair, juste `password_set` (voir la
modale d'export, templates/base.html, qui pré-remplit endpoint/login
mais laisse toujours le champ mot de passe vide)."""
settings = db.get_xapi_settings(slug)
return jsonify({
"endpoint": settings["endpoint"],
"login": settings["login"],
"password_set": bool(settings["password"]),
})
@app.route("/game/<slug>/xapi-settings", methods=["POST"])
def xapi_settings_set(slug):
"""Enregistre les réglages xAPI de ce jeu — voir
db/games/set_xapi_settings.py : un mot de passe absent/vide dans le
corps JSON laisse celui déjà enregistré inchangé plutôt que de
l'effacer."""
body = request.get_json(silent=True) or {}
endpoint = (body.get("endpoint") or "").strip()
login = (body.get("login") or "").strip()
password = body.get("password") or None
db.set_xapi_settings(slug, endpoint, login, password)
return jsonify({"ok": True})