old_contents: from functools import wraps
  from flask import abort
  from flask.ext.login import current_user
  from .models import Permission
  
  
  def permission_required(permission):
      def decorator(f):
          @wraps(f)
          def decorated_function(*args, **kwargs):
              if not current_user.can(permission):
                  abort(403)
              return f(*args, **kwargs)
          return decorated_function
      return decorator
  
  def admin_required(f):
      return permission_required(Permission.ADMINISTER)(f)
  
new_contents: from functools import wraps
  from flask import abort
  from flask.ext.login import current_user
  from .models import Permission
  from threading import Thread
  
  
  def permission_required(permission):
      def decorator(f):
          @wraps(f)
          def decorated_function(*args, **kwargs):
              if not current_user.can(permission):
                  abort(403)
              return f(*args, **kwargs)
          return decorated_function
      return decorator
  
  def admin_required(f):
      return permission_required(Permission.ADMINISTER)(f)
      
      
      
  def async(f):
      def wrapper(*args, **kwargs):
          thr = Thread(target=f, args=args, kwargs=kwargs)
          thr.start()
      return wrapper
  
subject: Update decorators.py