Normaliser une ligne¶
Objectif : transformer une ligne brute de la base en dict propre, prêt à afficher.
Ce que vous allez apprendre : en base, les métadonnées sont une chaîne JSON.
normalize_stats_event_row désérialise les métadonnées et valide la ligne. Une ligne
incomplète ou un JSON invalide lève StatsAdminError.
Troisième palier du niveau avancé de la progression stats.
Module opt-in
Ce starter suppose forge-mvc-stats installé (palier « Installation »).
Ce que ce starter montre¶
- une ligne brute (métadonnées en chaîne JSON) ;
normalize_stats_event_row(row)→ métadonnées en dict ;- une transformation pure.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_stats.normalize_stats_event_row |
Normaliser une ligne brute (métadonnées désérialisées). | Stats |
Tester¶
Ouvrez https://localhost:8000/stats-normalize : la ligne brute et sa version normalisée.
Le contrôleur¶
# mvc/controllers/stats_normalize_controller.py
from forge_mvc_stats import normalize_stats_event_row
_RAW_ROW = {"id": 1, "name": "page_view", "label": "Vue de page", "category": "navigation",
"metadata": '{"path": "/", "ref": "home"}', "created_at": "2026-01-01T10:00:00"}
normalized = normalize_stats_event_row(dict(_RAW_ROW))
# normalized["metadata"] est un dict, plus une chaîne
Comprendre ce code¶
list_stats_eventsapplique déjà cette normalisation ; ce palier l'isole pour comprendre la transformationchaîne JSON → dict.- La validation refuse une ligne incomplète ou un JSON invalide (
StatsAdminError) plutôt que de propager des données douteuses. - Le résultat est directement utilisable dans une vue ou une API.
À retenir¶
normalize_stats_event_rowdésérialise les métadonnées et valide la ligne.- C'est la brique sous
list_stats_events. - Une ligne douteuse est refusée, pas propagée.
Après ce starter¶
Vous avez parcouru toute la progression stats : événement, enregistrement, consultation.