Fixed #11124 -- Expanded docstrings of the ModelAdmin has_{change|delete}_permission methods to make it clear they can be overriden to implement per-instance permission checks. Refs #12642.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@15126 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ramiro Morales 2011-01-01 00:37:38 +00:00
parent 70c8cd4100
commit 9c950db518
1 changed files with 16 additions and 7 deletions

View File

@ -340,17 +340,23 @@ class ModelAdmin(BaseModelAdmin):
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())
@ -358,10 +364,13 @@ class ModelAdmin(BaseModelAdmin):
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())