Example #1
0

def login_required(func):
    def inner(request, *args, **kwargs):
        if request.user.is_anonymous():
            if request.is_xhr:
                return Forbidden()
            else:
                return redirect(create_login_url(request.url))
        return func(request, *args, **kwargs)

    update_wrapper(inner, func)
    return inner


login_required = auto_adapt_to_methods(login_required)


def admin_required(func):
    def inner(request, *args, **kwargs):
        if not request.user.is_admin:
            if request.user.is_anonymous():
                return redirect(create_login_url(request.url))
            else:
                # TODO: Lead to more user friendly error page.
                raise Forbidden(
                    description=
                    '<p>You don\'t have the permission to access the requested resource.'
                    ' It is either read-protected or not readable by the server.</p>'
                    ' Maybe you want <a href="%s">logout</a>?' %
                    create_logout_url(request.url))
Example #2
0
# -*- coding: utf-8 -*-

"""
Kay cache decorators

:Copyright: (c) 2009 Accense Technology, Inc.,
                     Takashi Matsuo <*****@*****.**>
                     All rights reserved.
:license: BSD, see LICENSE for more details.
"""

import kay.cache
from kay.utils.decorators import (
  decorator_from_middleware_with_args, decorator_from_middleware,
  auto_adapt_to_methods,
)
from kay.cache.middleware import CacheMiddleware

def no_cache(func):
  """
  This is a decortor for marking particular view not to cache.
  """
  setattr(func, kay.cache.NO_CACHE, True)
  return func

no_cache = auto_adapt_to_methods(no_cache)

cache_page = decorator_from_middleware_with_args(CacheMiddleware)
Example #3
0
def gaema_login_required(*services):
  def outer(func):
    inner = create_inner_func_for_auth(func, *services)
    update_wrapper(inner, func)
    return inner
  return auto_adapt_to_methods(outer)
Example #4
0
)
from kay.ext.gaema.services import (
  GOOG_OPENID, GOOG_HYBRID, TWITTER, FACEBOOK,
)

def create_inner_func_for_auth(func, *targets):
  def inner(request, *args, **kwargs):
    for service in targets:
      if get_gaema_user(service):
        return func(request, *args, **kwargs)
    return redirect(url_for('gaema/select_service', targets='|'.join(targets),
                            next_url=url_quote_plus(request.url)))
  return inner

def gaema_login_required(*services):
  def outer(func):
    inner = create_inner_func_for_auth(func, *services)
    update_wrapper(inner, func)
    return inner
  return auto_adapt_to_methods(outer)

def marketplace_login_required(func):
  def inner(request, *args, **kwargs):
    if get_gaema_user(kwargs['domain_name']):
      return func(request, *args, **kwargs)
    return redirect(create_marketplace_login_url(kwargs['domain_name'],
                                                 nexturl=request.url))
  return inner

marketplace_login_required = auto_adapt_to_methods(marketplace_login_required)
Example #5
0
  create_login_url, create_logout_url
)
from kay.utils.decorators import auto_adapt_to_methods

def login_required(func):
  def inner(request, *args, **kwargs):
    if request.user.is_anonymous():
      if request.is_xhr:
        return Forbidden()
      else:
        return redirect(create_login_url(request.url))
    return func(request, *args, **kwargs)
  update_wrapper(inner, func)
  return inner

login_required = auto_adapt_to_methods(login_required)

def admin_required(func):
  def inner(request, *args, **kwargs):
    if not request.user.is_admin:
      if request.user.is_anonymous():
        return redirect(create_login_url(request.url))
      else:
        # TODO: Lead to more user friendly error page.
        raise Forbidden(
          description = 
          '<p>You don\'t have the permission to access the requested resource.'
          ' It is either read-protected or not readable by the server.</p>'
          ' Maybe you want <a href="%s">logout</a>?' %
          create_logout_url(request.url)
        )
Example #6
0
# -*- coding: utf-8 -*-
"""
Kay cache decorators

:Copyright: (c) 2009 Accense Technology, Inc.,
                     Takashi Matsuo <*****@*****.**>
                     All rights reserved.
:license: BSD, see LICENSE for more details.
"""

import kay.cache
from kay.utils.decorators import (
    decorator_from_middleware_with_args,
    decorator_from_middleware,
    auto_adapt_to_methods,
)
from kay.cache.middleware import CacheMiddleware


def no_cache(func):
    """
  This is a decortor for marking particular view not to cache.
  """
    setattr(func, kay.cache.NO_CACHE, True)
    return func


no_cache = auto_adapt_to_methods(no_cache)

cache_page = decorator_from_middleware_with_args(CacheMiddleware)
Example #7
0
        def wrapped(request, course):
            course.update_view_count(n)
            return fun(request, course)

        return wrapped

    return decorate


def admin_or_owner_required(func):
    def inner(request, course, *args, **kwargs):
        if not request.user.is_admin:
            if not request.user == course.owner:
                if request.user.is_anonymous():
                    return redirect(local.app.auth_backend.create_login_url(request.url))
                else:
                    # TODO: Lead to more user friendly error page.
                    raise Forbidden(
                        description="<p>You don't have the permission to access the requested resource."
                        " It is either read-protected or not readable by the server.</p>"
                        ' Maybe you want <a href="%s">logout</a>?'
                        % local.app.auth_backend.create_logout_url(request.url)
                    )
        return func(request, course, *args, **kwargs)

    update_wrapper(inner, func)
    return inner


admin_or_owner_required = auto_adapt_to_methods(admin_or_owner_required)