Testing the template_context_prerender hook

This allows for modifying any context *right before render*, including
access to the variables that are passed in.  This test takes advantage
of that and takes one of the variables, "doubleme", and modifies
it (doubles it!)

In our case it turns "happy" and "joy" into "happyhappy" and "joyjoy".

This commit sponsored by Mark Holmquist.  Thank you!
This commit is contained in:
Christopher Allan Webber 2013-05-15 11:40:28 -05:00
parent 38ebd05d1a
commit a1099bba79
5 changed files with 17 additions and 5 deletions

View File

@ -348,11 +348,13 @@ def test_modify_context(context_modified_app):
specific thing: in yer specificpage specific thing: in yer specificpage
global thing: globally appended! global thing: globally appended!
something: orother""" something: orother
doubleme: happyhappy"""
# General test, should have global context variable only # General test, should have global context variable only
result = context_modified_app.get("/modify_context/") result = context_modified_app.get("/modify_context/")
assert result.body.strip() == """General page! assert result.body.strip() == """General page!
global thing: globally appended! global thing: globally appended!
lol: cats""" lol: cats
doubleme: joyjoy"""

View File

@ -26,6 +26,11 @@ def append_to_global_context(context):
context['global_append'] = 'globally appended!' context['global_append'] = 'globally appended!'
return context return context
def double_doubleme(context):
if 'doubleme' in context:
context['doubleme'] = context['doubleme'] * 2
return context
def setup_plugin(): def setup_plugin():
routes = [ routes = [
@ -46,4 +51,5 @@ hooks = {
'setup': setup_plugin, 'setup': setup_plugin,
('modify_context.specific_page', ('modify_context.specific_page',
'contextplugin/specific.html'): append_to_specific_context, 'contextplugin/specific.html'): append_to_specific_context,
'template_global_context': append_to_global_context} 'template_global_context': append_to_global_context,
'template_context_prerender': double_doubleme}

View File

@ -2,3 +2,4 @@ General page!
global thing: {{ global_append }} global thing: {{ global_append }}
lol: {{ lol }} lol: {{ lol }}
doubleme: {{ doubleme }}

View File

@ -3,3 +3,4 @@ Specific page!
specific thing: {{ specific_page_append }} specific thing: {{ specific_page_append }}
global thing: {{ global_append }} global thing: {{ global_append }}
something: {{ something }} something: {{ something }}
doubleme: {{ doubleme }}

View File

@ -21,11 +21,13 @@ def specific(request):
return render_to_response( return render_to_response(
request, request,
'contextplugin/specific.html', 'contextplugin/specific.html',
{"something": "orother"}) {"something": "orother",
"doubleme": "happy"})
def general(request): def general(request):
return render_to_response( return render_to_response(
request, request,
'contextplugin/general.html', 'contextplugin/general.html',
{"lol": "cats"}) {"lol": "cats",
"doubleme": "joy"})