Added content_type filtering in Permission querying example.
This commit is contained in:
parent
92bc727271
commit
6684af1e43
|
@ -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::
|
the user from the database. For example::
|
||||||
|
|
||||||
from django.contrib.auth.models import Permission, User
|
from django.contrib.auth.models import Permission, User
|
||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
|
from myapp.models import BlogPost
|
||||||
|
|
||||||
def user_gains_perms(request, user_id):
|
def user_gains_perms(request, user_id):
|
||||||
user = get_object_or_404(User, pk=user_id)
|
user = get_object_or_404(User, pk=user_id)
|
||||||
# any permission check will cache the current set of permissions
|
# 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)
|
user.user_permissions.add(permission)
|
||||||
|
|
||||||
# Checking the cached permission set
|
# Checking the cached permission set
|
||||||
user.has_perm('myapp.change_bar') # False
|
user.has_perm('myapp.change_blogpost') # False
|
||||||
|
|
||||||
# Request new instance of User
|
# Request new instance of User
|
||||||
# Be aware that user.refresh_from_db() won't clear the cache.
|
# Be aware that user.refresh_from_db() won't clear the cache.
|
||||||
user = get_object_or_404(User, pk=user_id)
|
user = get_object_or_404(User, pk=user_id)
|
||||||
|
|
||||||
# Permission cache is repopulated from the database
|
# Permission cache is repopulated from the database
|
||||||
user.has_perm('myapp.change_bar') # True
|
user.has_perm('myapp.change_blogpost') # True
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue