Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #13684 -- if settings.ROOT_URLCONF isn't defined don't blow up …

…with an UnboundLocalError.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14488 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 96cc7baf0c6bc043e32d1972f95962045a7fba2b 1 parent 035cb99
@alex alex authored
View
13 django/core/handlers/base.py
@@ -73,13 +73,15 @@ def get_response(self, request):
from django.conf import settings
try:
+ # Setup default url resolver for this thread, this code is outside
+ # the try/except so we don't get a spurious "unbound local
+ # variable" exception in the event an exception is raised before
+ # resolver is set
+ urlconf = settings.ROOT_URLCONF
+ urlresolvers.set_urlconf(urlconf)
+ resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
try:
- # Setup default url resolver for this thread.
- urlconf = settings.ROOT_URLCONF
- urlresolvers.set_urlconf(urlconf)
- resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
response = None
-
# Apply request middleware
for middleware_method in self._request_middleware:
response = middleware_method(request)
@@ -239,4 +241,3 @@ def get_script_name(environ):
if script_url:
return force_unicode(script_url[:-len(environ.get('PATH_INFO', ''))])
return force_unicode(environ.get('SCRIPT_NAME', u''))
-
View
19 tests/regressiontests/middleware_exceptions/tests.py
@@ -1,8 +1,9 @@
import sys
-from django.test import TestCase
+from django.conf import settings
from django.core.signals import got_request_exception
from django.http import HttpResponse
+from django.test import TestCase
class TestException(Exception):
@@ -694,3 +695,19 @@ def test_process_exception_bad_middleware_permission_denied(self):
self.assert_middleware_usage(pre_middleware, True, True, True, False)
self.assert_middleware_usage(bad_middleware, True, True, True, True)
self.assert_middleware_usage(post_middleware, True, True, True, True)
+
+
+_missing = object()
+class RootUrlconfTests(TestCase):
+ def test_missing_root_urlconf(self):
+ try:
+ original_ROOT_URLCONF = settings.ROOT_URLCONF
+ del settings.ROOT_URLCONF
+ except AttributeError:
+ original_ROOT_URLCONF = _missing
+ self.assertRaises(AttributeError,
+ self.client.get, "/middleware_exceptions/view/"
+ )
+
+ if original_ROOT_URLCONF is not _missing:
+ settings.ROOT_URLCONF = original_ROOT_URLCONF

0 comments on commit 96cc7ba

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