Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #12554 again: Corrected regression in silencing attribute looku…

…ps introduced in r12823, plus added a test for this so it doesn't regress again.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12834 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit ed36a5f2cefcb5a055ec2ec0a275825226ee601a 1 parent b2db1b2
@kmtracey kmtracey authored
View
5 django/template/__init__.py
@@ -745,6 +745,11 @@ def _resolve_lookup(self, context):
TypeError, # unsubscriptable object
):
raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bit, current)) # missing attribute
+ except Exception, e:
+ if getattr(e, 'silent_variable_failure', False):
+ current = settings.TEMPLATE_STRING_IF_INVALID
+ else:
+ raise
except Exception, e:
if getattr(e, 'silent_variable_failure', False):
current = settings.TEMPLATE_STRING_IF_INVALID
View
8 tests/regressiontests/templates/tests.py
@@ -101,6 +101,11 @@ class SilentGetItemClass(object):
def __getitem__(self, key):
raise SomeException
+class SilentAttrClass(object):
+ def b(self):
+ raise SomeException
+ b = property(b)
+
class UTF8Class:
"Class whose __str__ returns non-ASCII data"
def __str__(self):
@@ -471,8 +476,9 @@ def get_template_tests(self):
# regression test for ticket #12554
# make sure a silent_variable_failure Exception is supressed
- # on dictionary lookup
+ # on dictionary and attribute lookup
'basic-syntax28': ("{{ a.b }}", {'a': SilentGetItemClass()}, ('', 'INVALID')),
+ 'basic-syntax29': ("{{ a.b }}", {'a': SilentAttrClass()}, ('', 'INVALID')),
# List-index syntax allows a template to access a certain item of a subscriptable object.
'list-index01': ("{{ var.1 }}", {"var": ["first item", "second item"]}, "second item"),
Please sign in to comment.
Something went wrong with that request. Please try again.