45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
flask.globals
|
|
~~~~~~~~~~~~~
|
|
|
|
Defines all the global objects that are proxies to the current
|
|
active context.
|
|
|
|
:copyright: (c) 2011 by Armin Ronacher.
|
|
:license: BSD, see LICENSE for more details.
|
|
"""
|
|
|
|
from functools import partial
|
|
from werkzeug.local import LocalStack, LocalProxy
|
|
|
|
|
|
def _lookup_req_object(name):
|
|
top = _request_ctx_stack.top
|
|
if top is None:
|
|
raise RuntimeError('working outside of request context')
|
|
return getattr(top, name)
|
|
|
|
|
|
def _lookup_app_object(name):
|
|
top = _app_ctx_stack.top
|
|
if top is None:
|
|
raise RuntimeError('working outside of application context')
|
|
return getattr(top, name)
|
|
|
|
|
|
def _find_app():
|
|
top = _app_ctx_stack.top
|
|
if top is None:
|
|
raise RuntimeError('working outside of application context')
|
|
return top.app
|
|
|
|
|
|
# context locals
|
|
_request_ctx_stack = LocalStack()
|
|
_app_ctx_stack = LocalStack()
|
|
current_app = LocalProxy(_find_app)
|
|
request = LocalProxy(partial(_lookup_req_object, 'request'))
|
|
session = LocalProxy(partial(_lookup_req_object, 'session'))
|
|
g = LocalProxy(partial(_lookup_app_object, 'g'))
|