|
- # -*- coding: utf-8 -*-
- """
- flask.globals
- ~~~~~~~~~~~~~
-
- Defines all the global objects that are proxies to the current
- active context.
-
- :copyright: 2010 Pallets
- :license: BSD-3-Clause
- """
- from functools import partial
-
- from werkzeug.local import LocalProxy
- from werkzeug.local import LocalStack
-
-
- _request_ctx_err_msg = """\
- Working outside of request context.
-
- This typically means that you attempted to use functionality that needed
- an active HTTP request. Consult the documentation on testing for
- information about how to avoid this problem.\
- """
- _app_ctx_err_msg = """\
- Working outside of application context.
-
- This typically means that you attempted to use functionality that needed
- to interface with the current application object in some way. To solve
- this, set up an application context with app.app_context(). See the
- documentation for more information.\
- """
-
-
- def _lookup_req_object(name):
- top = _request_ctx_stack.top
- if top is None:
- raise RuntimeError(_request_ctx_err_msg)
- return getattr(top, name)
-
-
- def _lookup_app_object(name):
- top = _app_ctx_stack.top
- if top is None:
- raise RuntimeError(_app_ctx_err_msg)
- return getattr(top, name)
-
-
- def _find_app():
- top = _app_ctx_stack.top
- if top is None:
- raise RuntimeError(_app_ctx_err_msg)
- 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"))
|