Structural Menu Registration¶
Questa nota serve a evitare nuovi casi di menu visibili a meta o con permessi incompleti.
Problema¶
Per un nuovo menu non basta registrare la view con appbuilder.add_view(...).
I livelli reali da allineare sono:
- registrazione menu/view
menu_access- permessi della
BaseView - filtro runtime menu (
forced labels/tenant forced labels) - accessibilita runtime della view (
is_accessible)
Se uno di questi manca, il menu puo: - non comparire - comparire ma dare accesso negato - comparire in tenant ma non in control plane
Pattern attuale¶
In app/__init__.py esistono due helper:
_register_structural_menu_view(...)_register_structural_menu_label(...)
Usarli per tutti i nuovi menu amministrativi recenti.
Quando usare cosa¶
Usa _register_structural_menu_view(...) quando il menu punta a una BaseView.
Esempi:
- Import RAS Legacy
- Template Legacy
- Easy Builder
- Template Dynamic
- Policy Documenti per Servizio
- Offerta RAS
- Onboarding Moduli
- Nuovo Onboarding Amministratore
Usa _register_structural_menu_label(...) quando il menu e un link o una voce senza view FAB dedicata.
Esempio:
- Preventivi RAS
Regola pratica¶
Per un nuovo menu:
- registrare la view/link con
appbuilder - aggiungere il menu al pattern strutturale con uno dei due helper
- se la view ha regole speciali, verificare
is_accessible() - se serve control plane, non dipendere solo dai moduli tenant
Checklist minima¶
Prima di considerare chiuso un nuovo menu, verificare:
- compare nel tenant giusto
- compare in control plane se richiesto
- il ruolo previsto ha
menu_access - la view ha i permessi necessari
- il runtime menu non la filtra via
- il click non produce
Accesso negato
Nota prudenziale¶
Con utenti operativi attivi:
- evitare refactor ampi del bootstrap menu
- aggiungere solo il menu nuovo con il pattern strutturale
- rimandare refactor piu grandi a finestra tranquilla