Mixins

Admin mixin for object-level permission checks via django-permission2.

When mixed into a ModelAdmin, the mixin overrides has_view_permission, has_change_permission, and has_delete_permission so that object-level permissions are checked through Django’s has_perm (and therefore through any registered PermissionBackend and permission logics) whenever an obj is provided.

When obj is None (e.g. on list views), the mixin defers to the default ModelAdmin behaviour.

class permission.mixins.admin.RequireObjectPermissionAdminMixin[source]

Bases: object

ModelAdmin mixin that delegates object-level permission checks to request.user.has_perm(perm, obj).

Only has_view_permission, has_change_permission, and has_delete_permission are overridden. has_add_permission and has_module_permission are left untouched.

Usage:

from django.contrib import admin
from permission.mixins.admin import RequireObjectPermissionAdminMixin

class ArticleAdmin(RequireObjectPermissionAdminMixin, admin.ModelAdmin):
    pass
has_change_permission(request, obj=None)[source]
has_delete_permission(request, obj=None)[source]
has_view_permission(request, obj=None)[source]