Skip to content

Instantly share code, notes, and snippets.

@dsignr
Created June 3, 2018 07:52
Show Gist options
  • Save dsignr/ac105f1028a9f537bb0d12a851d1f15f to your computer and use it in GitHub Desktop.
Save dsignr/ac105f1028a9f537bb0d12a851d1f15f to your computer and use it in GitHub Desktop.

Revisions

  1. dsignr created this gist Jun 3, 2018.
    57 changes: 57 additions & 0 deletions example.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,57 @@
    # -*- 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'))