Author: adrian
Date: 2010-01-10 12:44:39 -0600 (Sun, 10 Jan 2010)
New Revision: 12185

Modified:
   django/trunk/django/shortcuts/__init__.py
   django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py
Log:
Fixed #11960 -- Improved error message for redirects. Thanks, mattmcc

Modified: django/trunk/django/shortcuts/__init__.py
===================================================================
--- django/trunk/django/shortcuts/__init__.py   2010-01-10 18:42:30 UTC (rev 
12184)
+++ django/trunk/django/shortcuts/__init__.py   2010-01-10 18:44:39 UTC (rev 
12185)
@@ -49,6 +49,9 @@
     try:
         return redirect_class(urlresolvers.reverse(to, args=args, 
kwargs=kwargs))
     except urlresolvers.NoReverseMatch:
+        # If this is a callable, re-raise.
+        if callable(to):
+            raise
         # If this doesn't "feel" like a URL, re-raise.
         if '/' not in to and '.' not in to:
             raise

Modified: django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py
===================================================================
--- django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py     
2010-01-10 18:42:30 UTC (rev 12184)
+++ django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py     
2010-01-10 18:44:39 UTC (rev 12185)
@@ -165,7 +165,13 @@
         res = redirect('http://example.com/')
         self.assertEqual(res['Location'], 'http://example.com/')
 
+    def test_redirect_view_object(self):
+        from views import absolute_kwargs_view
+        res = redirect(absolute_kwargs_view)
+        self.assertEqual(res['Location'], '/absolute_arg_view/')
+        self.assertRaises(NoReverseMatch, redirect, absolute_kwargs_view, 
wrong_argument=None)
 
+
 class NamespaceTests(TestCase):
     urls = 'regressiontests.urlpatterns_reverse.namespace_urls'
 

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.


Reply via email to