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.
24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
from ..connection import connect
|
|
|
|
|
|
def get_xapi_settings(slug):
|
|
"""Réglages xAPI de CE jeu (voir set_xapi_settings.py — stockés dans
|
|
_meta, même convention que 'name'/'onboarding_type', voir
|
|
db/games/game_type_catalog.py) : URL du LRS (Learning Record Store)
|
|
+ identifiants, saisis une seule fois par le créateur du jeu (voir
|
|
routes/publish/xapi_settings.py) plutôt que négociés à chaque
|
|
lancement (jamais le protocole cmi5 complet, voir publish/
|
|
build_scorm_package.py::build_scorm_zip). Chaînes vides si non
|
|
configuré — `endpoint` vide signifie "xAPI désactivé pour ce jeu"."""
|
|
conn = connect(slug)
|
|
rows = conn.execute(
|
|
"SELECT key, value FROM _meta WHERE key IN ('xapi_lrs_endpoint', 'xapi_lrs_login', 'xapi_lrs_password')"
|
|
).fetchall()
|
|
conn.close()
|
|
values = {row["key"]: row["value"] for row in rows}
|
|
return {
|
|
"endpoint": values.get("xapi_lrs_endpoint") or "",
|
|
"login": values.get("xapi_lrs_login") or "",
|
|
"password": values.get("xapi_lrs_password") or "",
|
|
}
|