Added new render_template method which will make our lives nicer and
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sat, 4 Jun 2011 21:32:13 +0000 (16:32 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sat, 4 Jun 2011 21:33:19 +0000 (16:33 -0500)
also will be useful for unit testing purposes :)

mediagoblin/util.py

index fdb2c3f51787a60e978ecb28cae8470886f94143..41f8a92adca47154a855a57512b2715df7e0b429 100644 (file)
@@ -78,6 +78,33 @@ def get_jinja_env(template_loader, locale):
     return template_env
 
 
+# We'll store context information here when doing unit tests
+TEMPLATE_TEST_CONTEXT = {}
+
+
+def render_template(request, template, context):
+    """
+    Render a template with context.
+
+    Always inserts the request into the context, so you don't have to.
+    Also stores the context if we're doing unit tests.  Helpful!
+    """
+    template = request.template_env.get_template(
+        template)
+    context['request'] = request
+    rendered = template.render(context)
+
+    if TESTS_ENABLED:
+        TEMPLATE_TEST_CONTEXT[template] = context
+
+    return rendered
+
+
+def clear_test_template_context():
+    global TEMPLATE_TEST_CONTEXT
+    TEMPLATE_TEST_CONTEXT = {}
+
+
 def setup_user_in_request(request):
     """
     Examine a request and tack on a request.user parameter if that's