summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNauman Tariq <nauman3128@gmail.com>2017-04-26 12:28:06 -0500
committerTim Graham <timograham@gmail.com>2017-04-26 13:28:32 -0400
commit3bbe85b7b51ea49197a20a70567ea40ad23a59dc (patch)
tree0270a06deee267636894f81deda2aa38cf42c368
parent42e4ad48ee78d09d8b1784d0a52c25e638748fd4 (diff)
[1.11.x] Added content_type filtering in Permission querying example.
Backport of 6684af1e43aeff99551f3265710d44c273f0554a from master
-rw-r--r--docs/topics/auth/default.txt15
1 files changed, 11 insertions, 4 deletions
diff --git a/docs/topics/auth/default.txt b/docs/topics/auth/default.txt
index 1d91bdcf42..196241bc07 100644
--- a/docs/topics/auth/default.txt
+++ b/docs/topics/auth/default.txt
@@ -275,25 +275,32 @@ afterward, in a test or view for example, the easiest solution is to re-fetch
the user from the database. For example::
from django.contrib.auth.models import Permission, User
+ from django.contrib.contenttypes.models import ContentType
from django.shortcuts import get_object_or_404
+ from myapp.models import BlogPost
+
def user_gains_perms(request, user_id):
user = get_object_or_404(User, pk=user_id)
# any permission check will cache the current set of permissions
- user.has_perm('myapp.change_bar')
+ user.has_perm('myapp.change_blogpost')
- permission = Permission.objects.get(codename='change_bar')
+ content_type = ContentType.objects.get_for_model(BlogPost)
+ permission = Permission.objects.get(
+ codename='change_blogpost',
+ content_type=content_type,
+ )
user.user_permissions.add(permission)
# Checking the cached permission set
- user.has_perm('myapp.change_bar') # False
+ user.has_perm('myapp.change_blogpost') # False
# Request new instance of User
# Be aware that user.refresh_from_db() won't clear the cache.
user = get_object_or_404(User, pk=user_id)
# Permission cache is repopulated from the database
- user.has_perm('myapp.change_bar') # True
+ user.has_perm('myapp.change_blogpost') # True
...