12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # -*- coding: utf-8 -*-
- """
- flask.globals
- ~~~~~~~~~~~~~
- Defines all the global objects that are proxies to the current
- active context.
- :copyright: © 2010 by the Pallets team.
- :license: BSD, see LICENSE for more details.
- """
- from functools import partial
- from werkzeug.local import LocalStack, LocalProxy
- _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'))
|