.. _handling-admin:

===================================================
Handling permissions using Django's admin interface
===================================================

*to be written*

.. note:: Django admin actions are available in Django 1.1 or later.

Apply permissions using Django's admin actions
==============================================

This feature is limited to superusers and users with either the
"Can change permission" (``change_permission``) or the
"Can change foreign permission" (``change_foreign_permission``) `permission`_.

.. image:: .static/admin-action-permission.png
.. _permission: http://docs.djangoproject.com/en/dev/topics/auth/#permissions

Disable the admin action site-wide
----------------------------------

To disable the action site-wide, place this line somewhere in your code.
One of your app ``admin.py`` files might be a good place::

    admin.site.disable_action('edit_permissions')

Further informations are available in Django's documentation:
`Disabling a site-wide action`_.

.. _Disabling a site-wide action: http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-a-site-wide-action

Disable the admin action per ModelAdmin instance
------------------------------------------------

In case you want to disable the permission action per ModelAdmin, delete this
action within the ``get_actions`` method. Here is an example::

    class EntryAdmin(admin.ModelAdmin):

        def get_actions(self, request):
            actions = super(EntryAdmin, self).get_actions(request)
            del actions['edit_permissions']
            return actions

Further informations are available in Django's documentation:
`Conditionally enabling or disabling actions`_.

.. _Conditionally enabling or disabling actions: http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#conditionally-enabling-or-disabling-actions
