Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Removed some reverse string craziness from the regroup template tag a…

…rgument checking and added a few syntax tests.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@6956 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit d1b5a0bde593f80968079cd9d1c971d92a53353e 1 parent c506f45
@gdub gdub authored
View
16 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)
View
10 tests/regressiontests/templates/tests.py
@@ -807,6 +807,16 @@ def get_template_tests(self):
'{% 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 %}', {}, '{%'),

0 comments on commit d1b5a0b

Please sign in to comment.
Something went wrong with that request. Please try again.