mirror of https://github.com/pallets/flask.git
Add Flask.request_globals_class to customize g.
Requested by toothr on #pocoo.
This commit is contained in:
parent
26da6a5365
commit
33bae1a8dc
2
CHANGES
2
CHANGES
|
@ -66,6 +66,8 @@ Relase date to be decided, codename to be chosen.
|
||||||
flashing on sessions implementations which use external storage.
|
flashing on sessions implementations which use external storage.
|
||||||
- Changed the behavior of tuple return values from functions. They are no
|
- Changed the behavior of tuple return values from functions. They are no
|
||||||
longer arguments to the response object, they now have a defined meaning.
|
longer arguments to the response object, they now have a defined meaning.
|
||||||
|
- Added :attr:`flask.Flask.request_globals_class` to allow a specific class to
|
||||||
|
be used on creation of the :data:`~flask.g` instance of each request.
|
||||||
|
|
||||||
Version 0.8.1
|
Version 0.8.1
|
||||||
-------------
|
-------------
|
||||||
|
|
|
@ -28,7 +28,7 @@ from .helpers import _PackageBoundObject, url_for, get_flashed_messages, \
|
||||||
find_package
|
find_package
|
||||||
from .wrappers import Request, Response
|
from .wrappers import Request, Response
|
||||||
from .config import ConfigAttribute, Config
|
from .config import ConfigAttribute, Config
|
||||||
from .ctx import RequestContext, AppContext
|
from .ctx import RequestContext, AppContext, _RequestGlobals
|
||||||
from .globals import _request_ctx_stack, request
|
from .globals import _request_ctx_stack, request
|
||||||
from .sessions import SecureCookieSessionInterface
|
from .sessions import SecureCookieSessionInterface
|
||||||
from .module import blueprint_is_module
|
from .module import blueprint_is_module
|
||||||
|
@ -148,6 +148,11 @@ class Flask(_PackageBoundObject):
|
||||||
#: :class:`~flask.Response` for more information.
|
#: :class:`~flask.Response` for more information.
|
||||||
response_class = Response
|
response_class = Response
|
||||||
|
|
||||||
|
#: The class that is used for the :data:`~flask.g` instance.
|
||||||
|
#:
|
||||||
|
#: .. versionadded:: 0.9
|
||||||
|
request_globals_class = _RequestGlobals
|
||||||
|
|
||||||
#: The debug flag. Set this to `True` to enable debugging of the
|
#: The debug flag. Set this to `True` to enable debugging of the
|
||||||
#: application. In debug mode the debugger will kick in when an unhandled
|
#: application. In debug mode the debugger will kick in when an unhandled
|
||||||
#: exception ocurrs and the integrated server will automatically reload
|
#: exception ocurrs and the integrated server will automatically reload
|
||||||
|
|
|
@ -18,6 +18,7 @@ from .module import blueprint_is_module
|
||||||
|
|
||||||
|
|
||||||
class _RequestGlobals(object):
|
class _RequestGlobals(object):
|
||||||
|
"""A plain object."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@ -139,7 +140,7 @@ class RequestContext(object):
|
||||||
self.app = app
|
self.app = app
|
||||||
self.request = app.request_class(environ)
|
self.request = app.request_class(environ)
|
||||||
self.url_adapter = app.create_url_adapter(self.request)
|
self.url_adapter = app.create_url_adapter(self.request)
|
||||||
self.g = _RequestGlobals()
|
self.g = app.request_globals_class()
|
||||||
self.flashes = None
|
self.flashes = None
|
||||||
self.session = None
|
self.session = None
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,16 @@ class AppContextTestCase(FlaskTestCase):
|
||||||
|
|
||||||
self.assert_equal(cleanup_stuff, [None])
|
self.assert_equal(cleanup_stuff, [None])
|
||||||
|
|
||||||
|
def test_custom_request_globals_class(self):
|
||||||
|
class CustomRequestGlobals(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.spam = 'eggs'
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
app.request_globals_class = CustomRequestGlobals
|
||||||
|
with app.test_request_context():
|
||||||
|
self.assert_equal(
|
||||||
|
flask.render_template_string('{{ g.spam }}'), 'eggs')
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
suite = unittest.TestSuite()
|
suite = unittest.TestSuite()
|
||||||
|
|
Loading…
Reference in New Issue