mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	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:
		| @@ -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>' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user