feat: améliorations UX roadmap votes #94
- Votes cappés à VOTES_PER_WEEK (pas d'accumulation) pour valoriser les connexions régulières - Solde de votes affiché dans la liste (input inéditable) à la place du bandeau Alert, avec date de prochain rechargement - Compteur de votes par feature affiché comme input inéditable en fin de ligne (avant le bouton "+") - Animation FLIP JS (roadmap_flip.js) : seules les lignes qui changent de position sont animées après un vote - Renommage votes_credited_until → votes_last_credited_at (migration 0005) - Constantes du module utilisées dans les assertions de tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -35,10 +35,18 @@ def test_fill_csrf_inputs_allows_initial_call():
|
||||
initiale (_pages_location → _generate_csrf_token → csrf-token → _fill_csrf_inputs),
|
||||
laissant le champ csrf_token vide → erreur 400 au premier chargement de /connexion.
|
||||
"""
|
||||
import src.app # noqa: F401 — enregistre les callbacks
|
||||
from src.app import app # enregistre les callbacks et expose callback_map
|
||||
|
||||
# Tant que l'app n'a pas été servie, les callbacks vivent dans
|
||||
# dash._callback.GLOBAL_CALLBACK_MAP. Dès la première requête (qu'un test
|
||||
# précédent a pu déclencher), Dash les déplace dans app.callback_map et vide
|
||||
# le registre global. On inspecte donc les deux pour ne pas dépendre de
|
||||
# l'ordre des tests.
|
||||
found = False
|
||||
for cb_info in dash._callback.GLOBAL_CALLBACK_MAP.values():
|
||||
registries = list(dash._callback.GLOBAL_CALLBACK_MAP.values()) + list(
|
||||
app.callback_map.values()
|
||||
)
|
||||
for cb_info in registries:
|
||||
inputs = getattr(cb_info, "inputs", None) or cb_info.get("inputs", [])
|
||||
for inp in inputs:
|
||||
if hasattr(inp, "component_id"):
|
||||
|
||||
Reference in New Issue
Block a user