From d1b5a0bde593f80968079cd9d1c971d92a53353e Mon Sep 17 00:00:00 2001 From: Gary Wilson Jr Date: Wed, 19 Dec 2007 06:11:55 +0000 Subject: [PATCH] Removed some reverse string craziness from the regroup template tag argument checking and added a few syntax tests. git-svn-id: http://code.djangoproject.com/svn/django/trunk@6956 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/template/defaulttags.py | 16 +++++++--------- tests/regressiontests/templates/tests.py | 10 ++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 813e5dbed66..9eae75b8ef8 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -926,20 +926,18 @@ def regroup(parser, token): {% regroup people|dictsort:"gender" by gender as grouped %} """ - firstbits = token.contents.split(None, 3) - if len(firstbits) != 4: + bits = token.contents.split() + if len(bits) != 6: raise TemplateSyntaxError, "'regroup' tag takes five arguments" - target = parser.compile_filter(firstbits[1]) - if firstbits[2] != 'by': + target = parser.compile_filter(bits[1]) + if bits[2] != 'by': raise TemplateSyntaxError("second argument to 'regroup' tag must be 'by'") - lastbits_reversed = firstbits[3][::-1].split(None, 2) - if lastbits_reversed[1][::-1] != 'as': + if bits[4] != 'as': raise TemplateSyntaxError("next-to-last argument to 'regroup' tag must" " be 'as'") - expression = parser.compile_filter(lastbits_reversed[2][::-1]) - - var_name = lastbits_reversed[0][::-1] + expression = parser.compile_filter(bits[3]) + var_name = bits[5] return RegroupNode(target, expression, var_name) regroup = register.tag(regroup) diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index 846023afc97..bbe3902f5b9 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -807,6 +807,16 @@ class Templates(unittest.TestCase): '{% endfor %},' + \ '{% endfor %}', {}, ''), + + # Test syntax. + 'regroup03': ('{% regroup data by bar as %}', {}, + template.TemplateSyntaxError), + 'regroup04': ('{% regroup data by bar thisaintright grouped %}', {}, + template.TemplateSyntaxError), + 'regroup05': ('{% regroup data thisaintright bar as grouped %}', {}, + template.TemplateSyntaxError), + 'regroup06': ('{% regroup data by bar as grouped toomanyargs %}', {}, + template.TemplateSyntaxError), ### TEMPLATETAG TAG ####################################################### 'templatetag01': ('{% templatetag openblock %}', {}, '{%'),