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.
34 lines
1.2 KiB
Python
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})
|