PageRenderTime 14ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/django/contrib/admin/views/decorators.py

https://code.google.com/p/mango-py/
Python | 32 lines | 24 code | 3 blank | 5 comment | 4 complexity | d151cd4a9fc1e2d69c65c44529f01fa5 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. try:
  2. from functools import wraps
  3. except ImportError:
  4. from django.utils.functional import wraps # Python 2.4 fallback.
  5. from django.utils.translation import ugettext as _
  6. from django.contrib.admin.forms import AdminAuthenticationForm
  7. from django.contrib.auth.views import login
  8. from django.contrib.auth import REDIRECT_FIELD_NAME
  9. def staff_member_required(view_func):
  10. """
  11. Decorator for views that checks that the user is logged in and is a staff
  12. member, displaying the login page if necessary.
  13. """
  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)
  18. 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'."
  19. defaults = {
  20. 'template_name': 'admin/login.html',
  21. 'authentication_form': AdminAuthenticationForm,
  22. 'extra_context': {
  23. 'title': _('Log in'),
  24. 'app_path': request.get_full_path(),
  25. REDIRECT_FIELD_NAME: request.get_full_path(),
  26. },
  27. }
  28. return login(request, **defaults)
  29. return wraps(view_func)(_checklogin)