- Author:
- uswaretech
- Posted:
- July 8, 2009
- Language:
- Python
- Version:
- 1.0
- Score:
- 0 (after 0 ratings)
Suppose you want a decorator which takes multiple permissions. You can use permission_required which takes a single value.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from django.contrib.auth.decorators import login_required, permission_required, user_passes_test
def any_permission_required(*args):
"""
A decorator which checks user has any of the given permissions.
permission required can not be used in its place as that takes only a
single permission.
"""
def test_func(user):
for perm in args:
if user.has_perm(perm):
return True
return False
return user_passes_test(test_func)
#permission_required for comparisions
def permission_required(perm, login_url=None):
"""
Decorator for views that checks whether a user has a particular permission
enabled, redirecting to the log-in page if necessary.
"""
return user_passes_test(lambda u: u.has_perm(perm), login_url=login_url)
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 11 months, 2 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 3 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
- Help text hyperlinks by sa2812 1 year, 7 months ago
Comments
This can be simplified in Python 2.5 and above:
#
Please login first before commenting.