December 4th, 2012

django-fluent-dashboard 0.3.0

Django Fluent Dashboard - An improved django-admin-tools dashboard for Django projects.

Setup
Features
Performance
Support
PriceFree

I was thinking of using this Django app for a very long time now, but never really gave it a try. After trying it with my Hacker's Edge project, I must say that I am enjoying it. Fluent Dashboard is an extension to the already nicely done django-admin-tools. It adds some much needed polish to the Django admin interface, to make it more on the lines of popular open source CMS software on the market.

The overall configuration can be a little lengthy for an existing website you wish to convert over. However, if you use this new admin interface from the start of your project, you will not need to worry about any time consuming configurations later on. For each model you create, just add a new option to the dashboard configuration. I wish that it was able to read it's options from the AdminModel directly, this would eliminate the need for all this in the settings.py, and immediately make your models work when moved into a different project. Hopefully we can see some better configuration methods as this project evolves.

I thought of first using it on this specific project, due to the complexity of one of the apps. As you may imagine, an online hacking simulation will require a great deal of data to properly simulate a virtual computer network. Fluent Dashboard makes it easy to separate a single app into multiple modules, making it much easier to navigate the admin interface. Here's my exact configuration I used for Hacker's Edge:

ADMIN_TOOLS_INDEX_DASHBOARD = 'fluent_dashboard.dashboard.FluentIndexDashboard'
ADMIN_TOOLS_APP_INDEX_DASHBOARD = 'fluent_dashboard.dashboard.FluentAppIndexDashboard'
ADMIN_TOOLS_MENU = 'fluent_dashboard.menu.FluentMenu'
ADMIN_MEDIA_PREFIX = STATIC_URL+'admin/'

FLUENT_DASHBOARD_APP_ICONS = {
    'he_one/userprofile': 'preferences-contact-list.png',
    'forums/post': 'view-calendar-journal.png',
    'forums/thread': 'view-conversation-balloon.png',
    'forums/topic': 'folder.png',
    'help_center/topic': 'folder-txt.png',
    'help_center/guide': 'view-choose.png',
    'he_one/message': 'view-pim-mail.png',
    'he_one/task': 'view-pim-tasks.png',
    'he_one/mailbox': 'server-database.png',
    'he_one/mission': 'view-calendar-list.png',
    'he_one/objective': 'view-media-playlist.png',
    'he_one/missionobjectives': 'view-calendar-journal.png',
    'he_one/host': 'preferences-desktop-wallpaper.png',
    'he_one/pcfile': 'folder-remote.png',
    'he_one/log': 'utilities-system-monitor.png',
    'he_one/namesystem': 'server-database.png',
    'he_one/filepermission': 'kwalletmanager.png',
    'he_one/userpermission': 'resource-group.png',
}

FLUENT_DASHBOARD_APP_GROUPS = (
    ('Forum', {
        'models': ('forums.*',),
    }),
    ('Help Center', {
        'models': ('help_center.*',),
    }),
    ('Mission Management', {
        'models': (
            'he_one.models.Mission',
            'he_one.models.Objective',
            'he_one.models.MissionObjectives',
        ),
    }),
    ('Mailbox Management', {
        'models': (
            'he_one.models.Mailbox',
            'he_one.models.Message',
        ),
    }),
    ('Host Management', {
        'models': (
            'he_one.models.Host',
            'he_one.models.NameSystem',
            'he_one.models.PCFile',
            'he_one.models.FilePermission',
            'he_one.models.Log',
            'he_one.models.UserPermission',
            'he_one.models.Task',
        ),
    }),
    ('Administration', {
        'models': (
            'django.contrib.auth.*',
            'django.contrib.sites.*',
            'registration.*',
            'he_one.models.UserProfile',
        ),
    }),
    ('Applications', {
        'models': ('*',),
        'module': 'AppList',
        'collapsible': True,
    }),
)

The result is a wonderfully looking admin interface, compared to how it looked before applying this admin theme. Be sure to click the image to the right to enlarge it to see the result of the code from above. Looks amazing compared to the standard Django admin, doesn't it? This is why I am highly recommending that if you are running a Django website which needs better separation of models, try out this app. It will also be very helpful when building websites which won't be administered by you, but your client.

This was applied onto an existing project, and I did experience some unhandled exceptions as I was adding the configuration. I later found out that the ordering of the models does matter. You should place the Administrative section near the bottom, if you wish to avoid the exceptions I had.

The documentation for this project is very well done and provides a great example on how to get started quickly. Since this builds on django-admin-tools, you can also use the options there to further customize the admin experience.

Pros:

  • Drastically improves the usability of the Django admin
  • Works with the existing Django admin app
  • Customizable icons and layout

Cons:

  • Takes time to configure for existing projects

Verdict:

If you are building a website for a client whom is not very technically inclined, considering using this Django app to make their Django experience easier.

Package Website
Dec. 27, 2012, 7:10 a.m. - Diederik

Hi Kevin, Thanks for your extensive review of the package. If you have any suggestions how to make the configuration easier, feel free to add a ticket/issue in the GitHub tracker and I'll have a look. - Diederik

About Me

My Photo
Names Kevin, hugely into UNIX technologies, not just Linux. I've dabbled with the demons, played with the Sun, and now with the Penguins.




Kevin Veroneau Consulting Services
Do you require the services of a Django contractor? Do you need both a website and hosting services? Perhaps I can help.

This Month

If you like what you read, please consider donating to help with hosting costs, and to fund future books to review.

Python Powered | © 2012-2013 Kevin Veroneau