From 49519328b4988bf89c11d50191cdee8e9bec3aaa Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sun, 9 Dec 2012 16:17:56 +0100 Subject: [PATCH] Fixed #19392 -- Improved error for old-style url tags with dashes. Thanks dloewenherz for the report. --- django/template/defaulttags.py | 7 ++++++- tests/regressiontests/templates/tests.py | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 45f4c1dbb14..aca2f41f2db 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -1262,7 +1262,12 @@ def url(parser, token): if len(bits) < 2: raise TemplateSyntaxError("'%s' takes at least one argument" " (path to a view)" % bits[0]) - viewname = parser.compile_filter(bits[1]) + try: + viewname = parser.compile_filter(bits[1]) + except TemplateSyntaxError as exc: + exc.args = (exc.args[0] + ". " + "The syntax of 'url' changed in Django 1.5, see the docs."), + raise args = [] kwargs = {} asvar = None diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index 9ec487d06c2..d21434a12e6 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -366,7 +366,7 @@ class Templates(TestCase): with self.assertRaises(urlresolvers.NoReverseMatch): t.render(c) - def test_url_explicit_exception_for_old_syntax(self): + def test_url_explicit_exception_for_old_syntax_at_run_time(self): # Regression test for #19280 t = Template('{% url path.to.view %}') # not quoted = old syntax c = Context() @@ -374,6 +374,12 @@ class Templates(TestCase): "The syntax changed in Django 1.5, see the docs."): t.render(c) + def test_url_explicit_exception_for_old_syntax_at_compile_time(self): + # Regression test for #19392 + with self.assertRaisesRegexp(template.TemplateSyntaxError, + "The syntax of 'url' changed in Django 1.5, see the docs."): + t = Template('{% url my-view %}') # not a variable = old syntax + @override_settings(DEBUG=True, TEMPLATE_DEBUG=True) def test_no_wrapped_exception(self): """