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.
This commit is contained in:
@@ -1 +1,2 @@
|
||||
from . import export_scorm
|
||||
from . import xapi_settings
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
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})
|
||||
Reference in New Issue
Block a user