summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Wilson Jr <gary.wilson@gmail.com>2007-12-19 06:11:55 +0000
committerGary Wilson Jr <gary.wilson@gmail.com>2007-12-19 06:11:55 +0000
commitd1b5a0bde593f80968079cd9d1c971d92a53353e (patch)
tree58380211b60bf7768cc9539c7599612044f22b0c
parentc506f4574a8df61c687ebadab5e0d34da086f586 (diff)
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
-rw-r--r--django/template/defaulttags.py16
-rw-r--r--tests/regressiontests/templates/tests.py10
2 files changed, 17 insertions, 9 deletions
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 813e5dbed6..9eae75b8ef 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 846023afc9..bbe3902f5b 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 %}', {}, '{%'),