mirror of
https://github.com/django/django.git
synced 2025-06-05 11:39:13 +00:00
Fixed #12554: Silence exceptions that have specified silent_variable_failure=True. Thanks Thomas Steinacher, copelco, mlavin.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12823 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
10884ec2eb
commit
2403f581b3
@ -745,11 +745,11 @@ class Variable(object):
|
|||||||
TypeError, # unsubscriptable object
|
TypeError, # unsubscriptable object
|
||||||
):
|
):
|
||||||
raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bit, current)) # missing attribute
|
raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bit, current)) # missing attribute
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if getattr(e, 'silent_variable_failure', False):
|
if getattr(e, 'silent_variable_failure', False):
|
||||||
current = settings.TEMPLATE_STRING_IF_INVALID
|
current = settings.TEMPLATE_STRING_IF_INVALID
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
return current
|
return current
|
||||||
|
|
||||||
|
@ -97,6 +97,10 @@ class OtherClass:
|
|||||||
def method(self):
|
def method(self):
|
||||||
return "OtherClass.method"
|
return "OtherClass.method"
|
||||||
|
|
||||||
|
class SilentGetItemClass(object):
|
||||||
|
def __getitem__(self, key):
|
||||||
|
raise SomeException
|
||||||
|
|
||||||
class UTF8Class:
|
class UTF8Class:
|
||||||
"Class whose __str__ returns non-ASCII data"
|
"Class whose __str__ returns non-ASCII data"
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@ -465,6 +469,11 @@ class Templates(unittest.TestCase):
|
|||||||
'basic-syntax26': (r'{{ "\"fred\"" }}', {}, "\"fred\""),
|
'basic-syntax26': (r'{{ "\"fred\"" }}', {}, "\"fred\""),
|
||||||
'basic-syntax27': (r'{{ _("\"fred\"") }}', {}, "\"fred\""),
|
'basic-syntax27': (r'{{ _("\"fred\"") }}', {}, "\"fred\""),
|
||||||
|
|
||||||
|
# regression test for ticket #12554
|
||||||
|
# make sure a silent_variable_failure Exception is supressed
|
||||||
|
# on dictionary lookup
|
||||||
|
'basic-syntax28': ("{{ a.b }}", {'a': SilentGetItemClass()}, ('', 'INVALID')),
|
||||||
|
|
||||||
# List-index syntax allows a template to access a certain item of a subscriptable object.
|
# 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"),
|
'list-index01': ("{{ var.1 }}", {"var": ["first item", "second item"]}, "second item"),
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user