In settings.py devo avere una costante::
ADMIN_TOOLS_INDEX_DASHBOARD = 'progetto.dashboard.ProgettoIndexDashboard'
Dove la classe ProgettoIndexDashboard::
from admin_tools.dashboard import modules, Dashboard
class ProgettoIndexDashboard(Dashboard):
def __init__(self, **kwargs):
super(ProgettoIndexDashboard, self).__init__(**kwargs)
self.columns = 3
def init_with_context(self, context):
request = context['request']
if request.user.is_superuser:
self.children.append(modules.AppList(
title=_('Application'),
exclude=( #classi che tolgo
'django.contrib.*', 'organization.models.*', 'product.models.*',
'jumbo.apps.auth.*'
),
))
self.children.append(MyLibDashboard(),) #moduli che aggiungo
else:
pass #ecc...
Per creare una pagina aggiuntiva sotto admin creo un file jmenu.py al primo livello della libreria::
from admin_tools.menu import items, Menu
from jumbo.conf.admin_menu import GenericMenuItem
def get_root_menu(children):
user = get_current_user()
root_menu = items.MenuItem(
title=_(''),
children=[],
url = reverse('admin:urlname')
)
children.append(root_menu)
return None
def add_extended_menuitems(children, current_app):
user = get_current_user()
Per creare un modulo personalizzato relativo ad una libreria Jumbo creiamo un file dashboard.py al primo livello della libreria::
from admin_tools.dashboard import modules
class MyLibDashboard(modules.Group):
def __init__(self, **kwargs):
children = [
MyDashboardChild() # questi sono i tab che compariranno nel modulo aggiunto
]
kwargs = {
'title': "Pbx",
'display': "tabs",
'children': children,
}
super(MyLibDashboard, self).__init__(**kwargs)
class MyDashboardChild(modules.ModelList):
def __init__(self, **kwargs):
self.template = 'foobar.html' # questo lo definisco solo se voglio
# usare un template personalizzato per il tab
kwargs = {
'title': _("Internal Options"),
'models': ('pbx.switch.models.Account',), # qui posso mettere modelli
#da qualsiasi package, faccio un raggruppamento logico
}
super(MyDashboardChild, self).__init__(**kwargs)
def init_with_context(self, context):
super(MyDashboardChild, self).init_with_context(context)
context['qs'] = Oggetto.objects.all()