f691: Use StrictUndefined for templates and fix some issues
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Wed, 4 Jan 2012 22:48:55 +0000 (23:48 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Wed, 4 Jan 2012 22:56:16 +0000 (23:56 +0100)
References to undefined variables in templates were
silently ignored/converted to None/empty strings. This
makes coding lazy stuff easy, but it makes catching typos
harder.
(It would have catched one of the SQL things earlier!)

But on the other hand it might make the current templates
error out everywhere. In fact, early testing has shown two
instances, that errored out. Those are fixed with this
commit too.

If this turns out to make things more complex and useless
than actually solving any problems, it can easily be
dropped again.

mediagoblin/templates/mediagoblin/user_pages/media.html
mediagoblin/templates/mediagoblin/user_pages/user.html
mediagoblin/tools/template.py

index 9b3317895ecaf511d91858c441df8a093909521e..4b5c9337ca42d1f77cd0fca863b7f7a6656dc84a 100644 (file)
@@ -60,8 +60,9 @@
       {% trans date=media.created.strftime("%Y-%m-%d") -%}
         Added on {{ date }}.
       {%- endtrans %}
-      {% if media['uploader'] == request.user._id or 
-                               request.user['is_admin'] %}
+      {% if request.user and
+            (media.uploader == request.user._id or 
+             request.user.is_admin) %}
         {% set edit_url = request.urlgen('mediagoblin.edit.edit_media',
                                    user= media.get_uploader.username,
                                    media= media._id) %}
index b952e88cc18cc8d97fefbdc73fd0d4c6b122566e..78bbaf8c135ade908a4e9ae6f65e48fde56d2158 100644 (file)
     {% else %}
       <div class="grid_6 alpha">
         {% include "mediagoblin/utils/profile.html" %}
-        {% if request.user._id == user._id or request.user.is_admin %}
+        {% if request.user and
+              (request.user._id == user._id or request.user.is_admin) %}
           <a href="{{ request.urlgen('mediagoblin.edit.profile') }}?username={{
                           user.username }}">
             {%- trans %}Edit profile{% endtrans -%}
index d0400347ea872452296383c76bbc0a2655bd3ae3..54a40de6416565010a4098d344f0cd9f15f88baf 100644 (file)
@@ -41,8 +41,11 @@ def get_jinja_env(template_loader, locale):
     if SETUP_JINJA_ENVS.has_key(locale):
         return SETUP_JINJA_ENVS[locale]
 
+    # jinja2.StrictUndefined will give exceptions on references
+    # to undefined/unknown variables in templates.
     template_env = jinja2.Environment(
         loader=template_loader, autoescape=True,
+        undefined=jinja2.StrictUndefined,
         extensions=['jinja2.ext.i18n', 'jinja2.ext.autoescape'])
 
     template_env.install_gettext_callables(