Préciser la pagination native (20/page) du tableau /admin

This commit is contained in:
Colin Maudry
2026-07-03 09:07:27 +02:00
parent 2cbee97afb
commit e678399fe7
@@ -146,12 +146,12 @@ def list_actions(limit: int = 200) -> list[sqlite3.Row]: ...
### `/admin` (liste) ### `/admin` (liste)
- Garde d'accès en tête de `layout()`. - Garde d'accès en tête de `layout()`.
- `dash_table.DataTable(filter_action="native", sort_action="native", ...)` - `dash_table.DataTable(filter_action="native", sort_action="native", page_action="native", page_size=20, ...)` alimenté par `list_users()`
alimenté par `list_users()` filtrage/tri par colonne entièrement côté filtrage/tri/pagination entièrement côté navigateur (pas de callback
navigateur (pas de callback serveur), à la différence de `/tableau` dont le serveur), à la différence de `/tableau` dont le `filter_action="custom"`
`filter_action="custom"` (`src/pages/tableau.py:74`) n'existe que pour (`src/pages/tableau.py:74`) n'existe que pour déléguer le filtrage à DuckDB
déléguer le filtrage à DuckDB sur ~1,5M lignes ; ici quelques centaines de sur ~1,5M lignes ; ici quelques centaines de lignes au plus, le mode natif
lignes au plus, le mode natif suffit. suffit pour les trois (20 lignes par page).
- Colonnes : email, email vérifié, plan courant, statut courant, créé le. - Colonnes : email, email vérifié, plan courant, statut courant, créé le.
- Lien "Voir" par ligne vers `/admin/user/<id>`. - Lien "Voir" par ligne vers `/admin/user/<id>`.
- Lien vers `/admin/journal` dans l'en-tête de page. - Lien vers `/admin/journal` dans l'en-tête de page.
@@ -232,5 +232,7 @@ Nouveau dossier `tests/admin/`, calqué sur les conventions existantes :
- Plusieurs administrateurs (`ADMIN_EMAIL` unique pour l'instant — passer à - Plusieurs administrateurs (`ADMIN_EMAIL` unique pour l'instant — passer à
une liste serait un changement d'une ligne dans `is_admin()` si besoin une liste serait un changement d'une ligne dans `is_admin()` si besoin
futur). futur).
- Pagination de `/admin` et `/admin/journal` au-delà des limites fixes - Pagination de `/admin/journal` (reste une liste plate limitée à 200 lignes) ;
(1000 users, 200 actions) — à revoir si le volume le justifie. et pagination de `/admin` au-delà de la limite fixe de `list_users()`
(1000 users) — la pagination native ne pagine que les lignes déjà chargées,
pas la requête SQL ; à revoir si le volume le justifie.