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) media = property(_media)
def has_add_permission(self, request): 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 opts = self.opts
return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission())
def has_change_permission(self, request, obj=None): def has_change_permission(self, request, obj=None):
""" """
Returns True if the given request has permission to change the given 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 Can be overriden by the user in subclasses. In such case it should
permission to change *any* object of the given type. 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 opts = self.opts
return request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) 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): def has_delete_permission(self, request, obj=None):
""" """
Returns True if the given request has permission to change the given 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 Can be overriden by the user in subclasses. In such case it should
permission to delete *any* object of the given type. 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 opts = self.opts
return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission()) return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission())