1
from functools import wraps
2
from django.utils.translation import ugettext as _
3
from django.contrib.admin.forms import AdminAuthenticationForm
4
from django.contrib.auth.views import login
5
1
from django.contrib.auth import REDIRECT_FIELD_NAME
8
def staff_member_required(view_func):
2
from django.contrib.auth.decorators import user_passes_test
5
def staff_member_required(view_func, redirect_field_name=REDIRECT_FIELD_NAME, login_url='admin:login'):
10
7
Decorator for views that checks that the user is logged in and is a staff
11
8
member, displaying the login page if necessary.
14
def _checklogin(request, *args, **kwargs):
15
if request.user.is_active and request.user.is_staff:
16
# The user is valid. Continue to the admin page.
17
return view_func(request, *args, **kwargs)
19
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'."
21
'template_name': 'admin/login.html',
22
'authentication_form': AdminAuthenticationForm,
25
'app_path': request.get_full_path(),
26
REDIRECT_FIELD_NAME: request.get_full_path(),
29
return login(request, **defaults)
10
return user_passes_test(
11
lambda u: u.is_active and u.is_staff,
13
redirect_field_name=redirect_field_name