2011-03-28 09:40:43 +08:00
from functools import wraps
2010-12-02 08:44:35 +08:00
from django . utils . translation import ugettext as _
from django . contrib . admin . forms import AdminAuthenticationForm
from django . contrib . auth . views import login
from django . contrib . auth import REDIRECT_FIELD_NAME
2005-10-18 12:21:07 +08:00
def staff_member_required ( view_func ) :
"""
Decorator for views that checks that the user is logged in and is a staff
member , displaying the login page if necessary .
"""
2011-05-02 00:46:02 +08:00
@wraps ( view_func )
2005-10-18 12:21:07 +08:00
def _checklogin ( request , * args , * * kwargs ) :
2010-01-11 00:51:13 +08:00
if request . user . is_active and request . user . is_staff :
2005-10-18 12:21:07 +08:00
# The user is valid. Continue to the admin page.
return view_func ( request , * args , * * kwargs )
2006-05-02 09:31:56 +08:00
assert hasattr ( request , ' session ' ) , " The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert ' django.contrib.sessions.middleware.SessionMiddleware ' . "
2010-12-02 08:44:35 +08:00
defaults = {
' template_name ' : ' admin/login.html ' ,
' authentication_form ' : AdminAuthenticationForm ,
' extra_context ' : {
' title ' : _ ( ' Log in ' ) ,
' app_path ' : request . get_full_path ( ) ,
REDIRECT_FIELD_NAME : request . get_full_path ( ) ,
} ,
}
return login ( request , * * defaults )
2011-05-02 00:46:02 +08:00
return _checklogin