Skip to content

Commit

Permalink
[1.2.X] Fixed #11124 -- Expanded docstrings of the ModelAdmin has_{ch…
Browse files Browse the repository at this point in the history
…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
ramiro committed Jan 12, 2011
1 parent 90be6ca commit 10ca44b
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions django/contrib/admin/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,28 +322,37 @@ 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())

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())
Expand Down

0 comments on commit 10ca44b

Please sign in to comment.