text: from __future__ import absolute_import, unicode_literals
  
  from django.conf import settings
  from django.contrib.auth.views import redirect_to_login
  from django.core.urlresolvers import reverse
  
  from tuiuiu.tuiuiucore import hooks
  from tuiuiu.tuiuiucore.models import PageViewRestriction
  
  
  def require_tuiuiu_login(next):
      login_url = getattr(settings, 'TUIUIU_FRONTEND_LOGIN_URL', reverse('tuiuiucore_login'))
      return redirect_to_login(next, login_url)
  
  
  @hooks.register('before_serve_page')
  def check_view_restrictions(page, request, serve_args, serve_kwargs):
      """
      Check whether there are any view restrictions on this page which are
      not fulfilled by the given request object. If there are, return an
      HttpResponse that will notify the user of that restriction (and possibly
      include a password / login form that will allow them to proceed). If
      there are no such restrictions, return None
      """
      for restriction in page.get_view_restrictions():
          if not restriction.accept_request(request):
              if restriction.restriction_type == PageViewRestriction.PASSWORD:
                  from tuiuiu.tuiuiucore.forms import PasswordViewRestrictionForm
                  form = PasswordViewRestrictionForm(instance=restriction,
                                                     initial={'return_url': request.get_full_path()})
                  action_url = reverse('tuiuiucore_authenticate_with_password', args=[restriction.id, page.id])
                  return page.serve_password_required_response(request, form, action_url)
  
              elif restriction.restriction_type in [PageViewRestriction.LOGIN, PageViewRestriction.GROUPS]:
                  return require_tuiuiu_login(next=request.get_full_path())
  