django-admin-tools 0.9.3
A collection of tools for the django administration interface
License: MIT License


django-admin-tools
==================

|build-status-image| |codecov-image| |documentation-status-image| |pypi-version| |py-versions|

Overview
--------

django-admin-tools is a collection of extensions/tools for the default django
administration interface, it includes:

* a full featured and customizable dashboard;
* a customizable menu bar;
* tools to make admin theming easier.

The code is hosted on `Github <https://github.com/django-admin-tools/django-admin-tools/>`_.

Django-admin-tools is generously documented, you can
`browse the documentation online
<https://django-admin-tools.readthedocs.io/>`_.
a good start is to read `the quickstart guide
<https://django-admin-tools.readthedocs.io/en/latest/quickstart.html>`_.

The project was created by `David Jean Louis <http://www.izimobil.org/>`_ and was previously hosted on `Bitbucket <http://bitbucket.org/izi/django-admin-tools/>`_.

Please join the `mailing list <http://groups.google.fr/group/django-admin-tools>`_ if you want to discuss of the future of django-admin-tools.

Requirements
------------

django-admin-tools is compatible with Django 1.11 LTS up to Django 4.0 as well Python 2.7, 3.5+.

For older python and django versions please use the 0.8.1 version of django-admin-tools which is available on Pypi.

Installation
------------

To install django-admin-tools, run the following command inside this directory:

    python setup.py install

If you have the Python **easy_install** utility available, you can also type
the following to download and install in one step::

    easy_install django-admin-tools

Or if you're using **pip**::

    pip install django-admin-tools

Or if you'd prefer you can simply place the included "admin_tools" directory
somewhere on your python path, or symlink to it from somewhere on your Python
path; this is useful if you're working from a Mercurial checkout.

An `installation guide <https://django-admin-tools.readthedocs.io/en/latest/installation.html>`_ is available in the documentation.

Documentation
-------------

`Extensive documentation <https://django-admin-tools.readthedocs.io/>`_ is available, it was made with the excellent `Sphinx program <http://sphinx.pocoo.org/>`_

Translations
------------

There is a `a transifex project <https://transifex.net/projects/p/django-admin-tools/>`_ for django-admin-tools.

Screenshots
-----------

The django admin login screen:

.. image:: http://www.izimobil.org/django-admin-tools/images/capture-1.png
   :alt: The django admin login screen


The admin index dashboard:

.. image:: http://www.izimobil.org/django-admin-tools/images/capture-2.png
   :alt: The admin index dashboard


The admin menu:

.. image:: http://www.izimobil.org/django-admin-tools/images/capture-3.png
   :alt: The admin menu

Dashboard modules can be dragged, collapsed, closed etc.:

.. image:: http://www.izimobil.org/django-admin-tools/images/capture-4.png
   :alt: Dashboard modules can be dragged, collapsed, closed etc.

The app index dashboard:

.. image:: http://www.izimobil.org/django-admin-tools/images/capture-5.png
   :alt: The app index dashboard


.. |build-status-image| image:: https://api.travis-ci.com/django-admin-tools/django-admin-tools.svg?branch=master
   :target: http://travis-ci.com/django-admin-tools/django-admin-tools?branch=master
   :alt: Travis build

.. |codecov-image| image:: https://codecov.io/gh/django-admin-tools/django-admin-tools/branch/master/graph/badge.svg?token=RtyqJORRby
   :target: https://codecov.io/gh/django-admin-tools/django-admin-tools

.. |pypi-version| image:: https://img.shields.io/pypi/v/django-admin-tools.svg
   :target: https://pypi.python.org/pypi/django-admin-tools
   :alt: Pypi version

.. |documentation-status-image| image:: https://readthedocs.org/projects/django-admin-tools/badge/?version=latest
   :target: http://django-admin-tools.readthedocs.io/en/latest/?badge=latest
   :alt: Documentation Status

.. |py-versions| image:: https://img.shields.io/pypi/pyversions/djangorestframework-datatables.svg
   :target: https://img.shields.io/pypi/pyversions/djangorestframework-datatables.svg
   :alt: Python versions

.. |dj-versions| image:: https://img.shields.io/pypi/djversions/djangorestframework-datatables.svg
   :target: https://img.shields.io/pypi/djversions/djangorestframework-datatables.svg
   :alt: Django versions


django-admin-tools changelog
============================

Version 0.9.3, 10 August 2023:
------------------------------

* Doc fixes
* Upgrade to jquery-ui 1.13.2
* Fix when template_name is given as PosixPath or other type 
* Add default template name to dummy.html to satisfy django-compressor


Version 0.9.2, 12 December 2021:
--------------------------------

* Fixed support for Django 4.0
* Compatibility with admin dark mode
* Fixed issue #100 (js bug when adding last column)
* Fixed issue #103 (compatibility with django-constance)


Version 0.9.1, 12 January 2021:
-------------------------------

This release adds support for django 3.X versions and future versions

* Dropped support for django < 1.11
* Support django 3.X and future versions
* Updated jQuery and jQuery UI to latest versions


Version 0.9.0, 19 January 2020:
-------------------------------

This release adds support for Django up to 2.2 and fixes various issues.

* Django 2.2 support
* Python 3.7 support
* Updated documentation


Version 0.8.1, 30 May 2017:
---------------------------

This release adds support for Django 1.11 and fixes various issues.

* Django 1.11 support
* Added app config to enable label override to avoid app name collisions
* Security fix: prevent removing users bookmarks by knowing the id
* Better support for custom user models
* Fixed docstrings


Version 0.8.0, 12 August 2016:
------------------------------

This release adds support for Django 1.10 and fixes various bugs and documentation issues.

* Django 1.10 support
* Dashboard pre_content and post_content now accept HTML by default
* Use the staff_member_required decorator instead of login_required
* Use user.get_username() instead of user.username
* Fixed wrong template loader class name in a warning issued by DAT
* Fixed various typos in docs and docstrings


Version 0.7.2, 14 January 2016:
-------------------------------

Bugfix release.

* Removed the config check that was causing issues in certain situations, we now use the builtin django system checks framework
* Removed superfluous "trans" calls in admin_tools templates
* Full PEP8 compliance


Version 0.7.1, 27 November 2015:
--------------------------------

Bugfix release.
This release fixes an incompatibility with ``django.template.loaders.cached.Loader``.


Version 0.7.0, 5 November 2015:
-------------------------------

* IMPORTANT INFORMATION, PLEASE READ: *

Starting from this version (0.7.0) you must add ``admin_tools.template_loaders.Loader`` to your templates loaders variable in your settings file, see here for details:
https://django-admin-tools.readthedocs.io/en/latest/configuration.html

Change log:

* Support for Django 1.9 and the new admin flat theme
* Added a custom template loader (based on django-apptemplates) that allows us to extends admin templates instead of overriding them
* Fixed a lot of warnings
* Fixed other minor issues and typos


Version 0.6.0, 7 July 2015:
---------------------------

* VERY IMPORTANT INFORMATION, PLEASE READ: *

Starting from this version (0.6.0) django-admin-tools is no longer compatible with Django 1.6 or lower.

Users of older django version should use the 0.5.2 version available on pypi.

If you are already using django-admin-tools with django <= 1.6, be sure to pin your requirements file to a specific version, eg:
django-admin-tools==0.5.2
If you don't do this, a "pip install --upgrade" will break your admin site.
You have been warned !

Now for the actual change log:

* Dropped support for django 1.6 or lower
* Added support for django 1.8
* Cleaned up old compatibility code
* Use django builtin static
* Various improvements and bug fixes


Version 0.5.2, 11 August 2014:
------------------------------

* Added django 1.5 and 1.6 support
* Django 1.7 is supported but migrations still using south
* Added python 3 support
* Add some blocks to facilitate template inheritance
* Add management command to remove the dashboard preferences
* Fixed issue #126 (feedparser deprecation warning)
* Fixed issue #133 (recent Actions links have an unecessary /admin/ prefix)
* Use i18n app name in app_list, menu and breadcrumb of app_index
* Use user.get_short_name and user.get_username in admin header (fixes #121)
* Better docstring for AppList and ModelList modules
* Eliminated jumping to top of page when clicking collapse/add/remove buttons on dashboard modules

Thanks to all the folks who contributed to this release.


Version 0.5.1, 13 March 2013:
-----------------------------

**Bugfix release, everyone using django < 1.5 should upgrade**

This release fixes a bug that was breaking the LinkList dashboard module
(thanks Iacopo Spalletti for the pull request).


Version 0.5.0, 06 March 2013:
-----------------------------

**Important information if you are upgrading from a previous version**

Starting from this version, django-admin-tools requires Django 1.3 or
superior. If you're running Django < 1.3, DO NOT UPGRADE and stay with
the 0.4.1 version.

* Compatibility with Django 1.4 and Django 1.5
* Upgraded to latest jQuery / jQuery-ui
* Many bug fixes and small improvements


Version 0.4.1, 15 November 2011:
--------------------------------

* Static files and django 1.3 support
* Fixed modules instanciation issues (fixes #65)
* Nested groups support & better html id generation (fixes issue #70)
* Fixed various js and css problems
* Added translation for Finnish + updates on other languages
* More robust dashboard layout
* Added force_show_title property to Group module


Version 0.4.0, 13 December 2010:
--------------------------------

**Important information if you are upgrading from a previous version**

This release of django-admin-tools introduces support for south database
migrations, if you are **not** using south you can skip this step.

Existing django-admin-tools should do the following::

    python manage.py migrate --fake admin_tools.dashboard
    python manage.py migrate --fake admin_tools.menu

New users should do::

    python manage.py migrate admin_tools.dashboard
    python manage.py migrate admin_tools.menu

**Major changes**

* big improvements of the API (see the dashboard and menu documentation for
  details), the old API is still supported but now deprecated;
* added a ModelList menu item;
* custom and multiple admin sites basic support;
* better integration with django-grappelli;
* django south support.

**Bugfixes and minor changes**

* Fixed issue #40 (python 2.5 compatibility);
* Fixed issue #49: disable rendering of empty group modules;
* Fixed issue #51: more robust test runner;
* Fixed issues #57 and #58: updated custom dashboard and menu template files
  to reflect the current code;
* Fixed issue #60: explicitely set color for links in module content;
* Some fixes for the future django 1.3;
* Fixes issue #61: Create empty preferences instance if user has no
  preferences saved yet.
* Fixed issue #62: updated base template to reflect django 1.2 changes;
* Fixed various js namespace pollutions;
* Improved docs;
* CZ locale support.

For more informations please see:
http://bitbucket.org/izi/django-admin-tools/changesets


Version 0.3.0, 16 July 2010:
----------------------------

**Major changes**

* added tests infrastructure, code coverage is around 70%;
* import paths and class names are changed. Old class names and paths are
  deprecated but still work;
* ``dashboard.modules.AppList``, ``dashboard.modules.ModelList`` and
  ``menu.items.AppList`` now have ability to display any models from different
  apps (using glob syntax) via ``models`` and ``exclude`` parameters.
  The order is now preserved. See #15;
* implemented dashboard module groups : you can now group modules in tabs,
  accordion or in a stacked layout.

**Bugfixes and minor change**

* moved the menu and dashboard template dirs in a "admin_tools" directory to
  avoid name conflicts with other apps, for example: django-cms
  (see: http://github.com/digi604/django-cms-2.0/issues/issue/397/);
* fixed bookmark bugs. The saved url was urlencoded, so we need to decode it
  before we save it. Added a clean_url method to the ``BookmarkForm``.
  Fixes #25;
* build urlpatterns conditionally regarding the content of ``INSTALLED_APPS``;
* better display of selected menu items;
* avoid a useless ajax GET request for retrieving dashboard preferences;
* upgraded jquery and jquery ui and renamed the files to more generic names;
* don't show bookmark form if ``NoReverseError``. This was breaking the
  ``django.contrib.auth`` unit tests;
* fixed url lookup for remove bookmark form;
* fixed issue #26 (menu bar showing for non-staff users) and also updated
  templates to match the django 1.2 templates;
* fixed issue #29 : Django 1.2 admin base template change;
* changed the way js files are loaded, hopefully now they are loaded
  syncronously (fixes issue #32);
* fixed issue #33: empty applist menu items should not be displayed;
* fixed issue #34: can't drag modules into an empty column;
* fixed issue #35 (wrong docstring for menu).

**New class names and paths**

***admin_tools.dashboard***

- admin_tools.dashboard.models.Dashboard => admin_tools.dashboard.Dashboard
- admin_tools.dashboard.models.DefaultIndexDashboard => admin_tools.dashboard.DefaultIndexDashboard
- admin_tools.dashboard.models.DefaultAppIndexDashboard => admin_tools.dashboard.DefaultAppIndexDashboard
- admin_tools.dashboard.models.AppIndexDashboard => admin_tools.dashboard.AppIndexDashboard
- admin_tools.dashboard.models.DashboardModule => admin_tools.dashboard.modules.DashboardModule
- admin_tools.dashboard.models.AppListDashboardModule => admin_tools.dashboard.modules.AppList
- admin_tools.dashboard.models.ModelListDashboardModule => admin_tools.dashboard.modules.ModelList
- admin_tools.dashboard.models.LinkListDashboardModule => admin_tools.dashboard.modules.LinkList
- admin_tools.dashboard.models.FeedDashboardModule => admin_tools.dashboard.modules.Feed

***admin_tools.menu***

- admin_tools.menu.models.Menu => admin_tools.menu.Menu
- admin_tools.menu.models.DefaultMenu => admin_tools.menu.DefaultMenu
- admin_tools.menu.models.MenuItem => admin_tools.menu.items.MenuItem
- admin_tools.menu.models.AppListMenuItem => admin_tools.menu.items.AppList
- admin_tools.menu.models.BookmarkMenuItem => admin_tools.menu.items.Bookmarks


Version 0.2.0, 15 March 2010:
-----------------------------

* bookmarks are now being saved in the database
  (fixes issue #20, thanks @alexrobbins);
* dashboard preferences are also saved in the database;
* added support for django-staticfiles STATIC_URL settings
  (fixes issue #21, thanks @dstufft);
* fixed issue #23: render_theming_css tag does not work on windows;
* added polish, italian, greek and brazilian locales;
* updated docs.

**Backwards incompatible changes in 0.2.0**

Now, django-admin-tools stores menu and dashboard preferences in the database,
so you'll need to run syncdb and to add the django-admin-tools urls to your
urlconf. These steps are described in details in the documentation.
You'll also need to add ``admin_tools`` to your ``INSTALLED_APPS`` for the
locales to work (this was not documented in previous versions).


Version 0.1.2, 13 February 2010:
--------------------------------

* fixed documentation issues;
* added locales;
* fixed issue #9: don't fail when feedparser is not installed;
* fixed issue #5: implemented dashboard layout persistence in cookies;
* enable all modules by default in the default dashboard;
* fixed recent actions log entry urls when displayed in app_index;
* added a "bookmarks" menu item and the code to manage bookmarks;
* fixed jquery issues with django 1.2.


Version 0.1.1, 10 February 2010:
--------------------------------

* fixed issue #2: template tag libraries have generic names;
* changed the way dashboards are selected, don't rely on request variables but
  pass an extra argument to the template tag instead (fixes issue #3);
* fixed MANIFEST.in (fixes issue #1);
* better setup.py file.


Version 0.1.0, 10 February 2010:
--------------------------------

* Initial release