Table Of Contents

Previous topic

Installazione di Jumbo

Next topic

Object List - Implementazione Lista Oggetti e Parametri Di Ricerca

This Page

Preparare il progetto con una dashboard personalizzata

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...

Creare una nuova pagina

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()

Creare nuovi moduli

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()