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. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13845 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
4df57fb916
commit
3f9054dd77
|
@ -601,6 +601,10 @@ def unordered_list(value, autoescape=None):
|
||||||
first_item, second_item = list_
|
first_item, second_item = list_
|
||||||
if second_item == []:
|
if second_item == []:
|
||||||
return [first_item], True
|
return [first_item], True
|
||||||
|
try:
|
||||||
|
it = iter(second_item) # see if second item is iterable
|
||||||
|
except TypeError:
|
||||||
|
return list_, False
|
||||||
old_style_list = True
|
old_style_list = True
|
||||||
new_second_item = []
|
new_second_item = []
|
||||||
for sublist in second_item:
|
for sublist in second_item:
|
||||||
|
|
|
@ -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']])
|
>>> 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>'
|
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
|
# Old format for unordered lists should still work
|
||||||
>>> unordered_list([u'item 1', []])
|
>>> unordered_list([u'item 1', []])
|
||||||
u'\t<li>item 1</li>'
|
u'\t<li>item 1</li>'
|
||||||
|
|
Loading…
Reference in New Issue