Commit 93e83546 authored by Luke Plant's avatar Luke Plant
Browse files

[1.2.X] Fixed #12965 - unordered_list template filter fails when given a...

[1.2.X] Fixed #12965 - unordered_list template filter fails when given a non-iterable second item in a two item list

Thanks to grahamu for the report and patch.

Backport of [13845] from trunk

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@13846 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 21f60e9f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -601,6 +601,10 @@ def unordered_list(value, autoescape=None):
        first_item, second_item = list_
        if second_item == []:
            return [first_item], True
        try:
            it = iter(second_item)  # see if second item is iterable
        except TypeError:
            return list_, False
        old_style_list = True
        new_second_item = []
        for sublist in second_item:
+11 −0
Original line number Diff line number Diff line
@@ -347,6 +347,17 @@ u'\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1\n\t\t<ul>\n\t\t\t<li>item 1.1.1\n\t\t\t
>>> unordered_list(['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']])
u'\t<li>States\n\t<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>Lawrence</li>\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>\n\t\t<li>Illinois</li>\n\t</ul>\n\t</li>'

>>> class ULItem(object):
...     def __init__(self, title):
...       self.title = title
...     def __unicode__(self):
...         return u'ulitem-%s' % str(self.title)

>>> a = ULItem('a')
>>> b = ULItem('b')
>>> unordered_list([a,b])
u'\t<li>ulitem-a</li>\n\t<li>ulitem-b</li>'

# Old format for unordered lists should still work
>>> unordered_list([u'item 1', []])
u'\t<li>item 1</li>'