Fixed #684 -- Fixed login_required and user_passes_test decorators. Thanks, rjwittams

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1004 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2005-10-23 22:42:44 +00:00
parent 17f62269c2
commit 43ad69e24e
1 changed files with 12 additions and 9 deletions

View File

@ -1,19 +1,22 @@
def user_passes_test(view_func, test_func): def user_passes_test(test_func):
""" """
Decorator for views that checks that the user passes the given test, Decorator for views that checks that the user passes the given test,
redirecting to the log-in page if necessary. The test should be a callable redirecting to the log-in page if necessary. The test should be a callable
that takes the user object and returns True if the user passes. that takes the user object and returns True if the user passes.
""" """
from django.views.auth.login import redirect_to_login def _dec(view_func):
def _checklogin(request, *args, **kwargs): def _checklogin(request, *args, **kwargs):
if test_func(request.user): from django.views.auth.login import redirect_to_login
return view_func(request, *args, **kwargs) if test_func(request.user):
return redirect_to_login(request.path) return view_func(request, *args, **kwargs)
return _checklogin return redirect_to_login(request.path)
return _checklogin
return _dec
def login_required(view_func): login_required = user_passes_test(lambda u: not u.is_anonymous())
login_required.__doc__ = (
""" """
Decorator for views that checks that the user is logged in, redirecting Decorator for views that checks that the user is logged in, redirecting
to the log-in page if necessary. to the log-in page if necessary.
""" """
return user_passes_test(lambda u: not u.is_anonymous()) )