Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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
Gary Wilson Jr. gdub authored
16 django/template/defaulttags.py
View
@@ -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)
10 tests/regressiontests/templates/tests.py
View
@@ -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 %}', {}, '{%'),
Please sign in to comment.
Something went wrong with that request. Please try again.