Generated: Mon 2013-04-29 21:17 CST
Source file: /home/slam/workspace/django-docs/docs/views.py
Stats: 27 executed, 10 missed, 12 excluded, 43 ignored
from django.views.generic import RedirectViewfrom django.core.urlresolvers import reversefrom django.views.static import servefrom django.conf import settingsfrom django.contrib.auth.decorators import login_requiredfrom functools import wrapsfrom django.contrib.admin.forms import AdminAuthenticationFormfrom django.contrib.auth.views import loginfrom django.contrib.admin.views.decorators import staff_member_requiredfrom django.contrib.auth import REDIRECT_FIELD_NAMEfrom django.utils.translation import ugettext as _from exceptions import ValueErrordef superuser_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. """ @wraps(view_func) def _checklogin(request, *args, **kwargs): if request.user.is_active and request.user.is_superuser: # The user is valid. Continue to the admin page. return view_func(request, *args, **kwargs) 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'." 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) return _checklogindef public(function=None): """ Dummy decorator that doesn't check anything. """ return functionclass DocsAccessSettingError(ValueError): passclass DocsRootSettingError(ValueError): passDOCS_ACCESS_CHOICES = ( 'public', 'login_required', 'staff', 'superuser',)DOCS_ROOT = getattr(settings, 'DOCS_ROOT', None)DOCS_ACCESS = getattr(settings, 'DOCS_ACCESS', DOCS_ACCESS_CHOICES[0])if DOCS_ACCESS == 'public': decorator = publicelif DOCS_ACCESS == 'login_required': decorator = login_requiredelif DOCS_ACCESS == 'staff': decorator = staff_member_requiredelif DOCS_ACCESS == 'superuser': decorator = superuser_requiredelse: decorator = public@decoratordef serve_docs(request, path, **kwargs): if DOCS_ACCESS not in DOCS_ACCESS_CHOICES: raise DocsAccessSettingError('DOCS_ACCESS setting value is incorrect: %s (choises are: %s)' % ( DOCS_ACCESS, DOCS_ACCESS_CHOICES )) if 'document_root' not in kwargs and not DOCS_ROOT: raise DocsRootSettingError('DOCS_ROOT setting value is incorrect: %s (must be a valid path)' % DOCS_ROOT) if 'document_root' not in kwargs and DOCS_ROOT: kwargs['document_root'] = DOCS_ROOT return serve(request, path, **kwargs)class DocsRootView(RedirectView): def get_redirect_url(self, **kwargs): return reverse('docs_files', kwargs={'path': 'index.html'})