mirror of
				https://github.com/django/django.git
				synced 2025-10-30 09:06:13 +00:00 
			
		
		
		
	Fixed #486 -- Fixed bug in template filter parsing in edge cases, and added unit tests. Thanks, Simon
git-svn-id: http://code.djangoproject.com/svn/django/trunk@634 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -295,13 +295,14 @@ class FilterParser: | |||||||
|             if registered_filters[filter_name][1] == True and arg is None: |             if registered_filters[filter_name][1] == True and arg is None: | ||||||
|                 raise TemplateSyntaxError, "Filter '%s' requires an argument" % filter_name |                 raise TemplateSyntaxError, "Filter '%s' requires an argument" % filter_name | ||||||
|             if registered_filters[filter_name][1] == False and arg is not None: |             if registered_filters[filter_name][1] == False and arg is not None: | ||||||
|                 raise TemplateSyntaxError, "Filter '%s' should not have an argument" % filter_name |                 raise TemplateSyntaxError, "Filter '%s' should not have an argument (argument is %r)" % (filter_name, arg) | ||||||
|             self.filters.append((filter_name, arg)) |             self.filters.append((filter_name, arg)) | ||||||
|             if self.current is None: |             if self.current is None: | ||||||
|                 break |                 break | ||||||
|  |  | ||||||
|     def read_filter(self): |     def read_filter(self): | ||||||
|         self.current_filter_name = self.read_alphanumeric_token() |         self.current_filter_name = self.read_alphanumeric_token() | ||||||
|  |         self.current_filter_arg = None | ||||||
|         # Have we reached the end? |         # Have we reached the end? | ||||||
|         if self.current is None: |         if self.current is None: | ||||||
|             return (self.current_filter_name, None) |             return (self.current_filter_name, None) | ||||||
|   | |||||||
| @@ -92,6 +92,9 @@ TEMPLATE_TESTS = { | |||||||
|     # Raise TemplateSyntaxError for empty block tags |     # Raise TemplateSyntaxError for empty block tags | ||||||
|     'basic-syntax28': ("{% %}", {}, template.TemplateSyntaxError), |     'basic-syntax28': ("{% %}", {}, template.TemplateSyntaxError), | ||||||
|  |  | ||||||
|  |     # Chained filters, with an argument to the first one | ||||||
|  |     'basic-syntax29': ('{{ var|removetags:"b i"|upper|lower }}', {"var": "<b><i>Yes</i></b>"}, "yes"), | ||||||
|  |  | ||||||
|     ### IF TAG ################################################################ |     ### IF TAG ################################################################ | ||||||
|     'if-tag01': ("{% if foo %}yes{% else %}no{% endif %}", {"foo": True}, "yes"), |     'if-tag01': ("{% if foo %}yes{% else %}no{% endif %}", {"foo": True}, "yes"), | ||||||
|     'if-tag02': ("{% if foo %}yes{% else %}no{% endif %}", {"foo": False}, "no"), |     'if-tag02': ("{% if foo %}yes{% else %}no{% endif %}", {"foo": False}, "no"), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user