Commit ef41bd40 authored by Karen Tracey's avatar Karen Tracey
Browse files

[1.1.X] Fixed #12554 again: Corrected regression in silencing attribute...

[1.1.X] Fixed #12554 again: Corrected regression in silencing attribute lookups introduced in r12824, plus added a test for this so it doesn't regress again. 

r12834 from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12835 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent c2267602
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -740,6 +740,11 @@ class Variable(object):
                        current = settings.TEMPLATE_STRING_IF_INVALID
                    else:
                        raise
            except Exception, e:
                if getattr(e, 'silent_variable_failure', False):
                    current = settings.TEMPLATE_STRING_IF_INVALID
                else:
                    raise

        return current

+7 −1
Original line number Diff line number Diff line
@@ -100,6 +100,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):
@@ -350,8 +355,9 @@ class Templates(unittest.TestCase):

            # 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"),