import logging from flask import _request_ctx_stack from data import model logger = logging.getLogger(__name__) def get_authenticated_user(): user = getattr(_request_ctx_stack.top, 'authenticated_user', None) if not user: db_id = getattr(_request_ctx_stack.top, 'authenticated_db_id', None) if not db_id: logger.debug('No authenticated user or deferred database id.') return None logger.debug('Loading deferred authenticated user.') loaded = model.get_user_by_id(db_id) set_authenticated_user(loaded) user = loaded if user: logger.debug('Returning authenticated user: %s', user.username) return user def set_authenticated_user(user_or_robot): ctx = _request_ctx_stack.top ctx.authenticated_user = user_or_robot def set_authenticated_user_deferred(user_or_robot_db_id): logger.debug('Deferring loading of authenticated user object: %s', user_or_robot_db_id) ctx = _request_ctx_stack.top ctx.authenticated_db_id = user_or_robot_db_id def get_validated_oauth_token(): return getattr(_request_ctx_stack.top, 'validated_oauth_token', None) def set_validated_oauth_token(token): ctx = _request_ctx_stack.top ctx.validated_oauth_token = token def get_validated_token(): return getattr(_request_ctx_stack.top, 'validated_token', None) def set_validated_token(token): ctx = _request_ctx_stack.top ctx.validated_token = token