Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[1.2.X] Fixed #11124 -- Expanded docstrings of the ModelAdmin has_{ch…

…ange|delete}_permission methods to make it clear they can be overriden to implement per-instance permission checks. Refs #12642.

Backport of [15126] from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15179 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 10ca44ba8daca7258747d5c6bf16e8763a4e6ca6 1 parent 90be6ca
Ramiro Morales ramiro authored
Showing with 16 additions and 7 deletions.
  1. +16 −7 django/contrib/admin/options.py
23 django/contrib/admin/options.py
View
@@ -322,17 +322,23 @@ def _media(self):
media = property(_media)
def has_add_permission(self, request):
- "Returns True if the given request has permission to add an object."
+ """
+ Returns True if the given request has permission to add an object.
+ Can be overriden by the user in subclasses.
+ """
opts = self.opts
return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission())
def has_change_permission(self, request, obj=None):
"""
Returns True if the given request has permission to change the given
- Django model instance.
+ Django model instance, the default implementation doesn't examine the
+ `obj` parameter.
- If `obj` is None, this should return True if the given request has
- permission to change *any* object of the given type.
+ Can be overriden by the user in subclasses. In such case it should
+ return True if the given request has permission to change the `obj`
+ model instance. If `obj` is None, this should return True if the given
+ request has permission to change *any* object of the given type.
"""
opts = self.opts
return request.user.has_perm(opts.app_label + '.' + opts.get_change_permission())
@@ -340,10 +346,13 @@ def has_change_permission(self, request, obj=None):
def has_delete_permission(self, request, obj=None):
"""
Returns True if the given request has permission to change the given
- Django model instance.
+ Django model instance, the default implementation doesn't examine the
+ `obj` parameter.
- If `obj` is None, this should return True if the given request has
- permission to delete *any* object of the given type.
+ Can be overriden by the user in subclasses. In such case it should
+ return True if the given request has permission to delete the `obj`
+ model instance. If `obj` is None, this should return True if the given
+ request has permission to delete *any* object of the given type.
"""
opts = self.opts
return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission())
Please sign in to comment.
Something went wrong with that request. Please try again.