summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2013-09-06 15:06:57 -0700
committerRussell Keith-Magee <russell@keith-magee.com>2013-09-06 15:06:57 -0700
commit122020fdb93980df850ae02f61d97da27e2cb515 (patch)
treebb728cfc74aa48e079a0d09eeb77e7724d3e17f6
parente844e10b4f06c13d24d405fe0d2e80a23d260508 (diff)
parente12de0ac0485d8799d08fda556b66399c6f89fc9 (diff)
Merge pull request #1579 from ianawilson/ticket_21058
Fixed #21058 -- Fixed debug view blowing up when no template is provided to the template rendering functions. Assistance on this commit from @jambonrose.
-rw-r--r--AUTHORS2
-rw-r--r--django/views/debug.py4
-rw-r--r--tests/view_tests/tests/test_debug.py7
-rw-r--r--tests/view_tests/urls.py1
-rw-r--r--tests/view_tests/views.py5
5 files changed, 19 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index 3ce3957353..e9684c5cc6 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -472,6 +472,7 @@ answer newbie questions, and generally made Django that much better:
phil@produxion.net
phil.h.smith@gmail.com
Gustavo Picon
+ Andrew Pinkham <http://AndrewsForge.com>
Travis Pinney
Michael Placentra II <someone@michaelplacentra2.net>
plisk
@@ -636,6 +637,7 @@ answer newbie questions, and generally made Django that much better:
Derek Willis <http://blog.thescoop.org/>
Rachel Willmer <http://www.willmer.com/kb/>
Jakub Wilk <ubanus@users.sf.net>
+ Ian A Wilson <http://ianawilson.com>
Jakub Wiśniowski <restless.being@gmail.com>
Maciej Wiśniowski <pigletto@gmail.com>
wojtek
diff --git a/django/views/debug.py b/django/views/debug.py
index 16f75df8c3..6a0f81876e 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -233,6 +233,10 @@ class ExceptionReporter(object):
from django.template.loader import template_source_loaders
self.template_does_not_exist = True
self.loader_debug_info = []
+ # If the template_source_loaders haven't been populated yet, you need
+ # to provide an empty list for this for loop to not fail.
+ if template_source_loaders is None:
+ template_source_loaders = []
for loader in template_source_loaders:
try:
source_list_func = loader.get_template_sources
diff --git a/tests/view_tests/tests/test_debug.py b/tests/view_tests/tests/test_debug.py
index e941f4ae0e..195ebf5ad9 100644
--- a/tests/view_tests/tests/test_debug.py
+++ b/tests/view_tests/tests/test_debug.py
@@ -14,6 +14,7 @@ from unittest import skipIf
from django.core import mail
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.urlresolvers import reverse
+from django.template.base import TemplateDoesNotExist
from django.test import TestCase, RequestFactory
from django.test.utils import (override_settings, setup_test_template_loader,
restore_template_loaders)
@@ -129,6 +130,12 @@ class DebugViewTests(TestCase):
finally:
shutil.rmtree(template_path)
+ def test_no_template_source_loaders(self):
+ """
+ Make sure if you don't specify a template, the debug view doesn't blow up.
+ """
+ self.assertRaises(TemplateDoesNotExist, self.client.get, '/render_no_template/')
+
class ExceptionReporterTests(TestCase):
rf = RequestFactory()
diff --git a/tests/view_tests/urls.py b/tests/view_tests/urls.py
index 4db3e262ed..e3ec63c289 100644
--- a/tests/view_tests/urls.py
+++ b/tests/view_tests/urls.py
@@ -68,4 +68,5 @@ urlpatterns += patterns('view_tests.views',
url(r'view_exception/(?P<n>\d+)/$', 'view_exception', name='view_exception'),
url(r'template_exception/(?P<n>\d+)/$', 'template_exception', name='template_exception'),
url(r'^raises_template_does_not_exist/(?P<path>.+)$', 'raises_template_does_not_exist', name='raises_template_does_not_exist'),
+ url(r'^render_no_template/$', 'render_no_template', name='render_no_template'),
)
diff --git a/tests/view_tests/views.py b/tests/view_tests/views.py
index 04924bc9f7..c21520eaa7 100644
--- a/tests/view_tests/views.py
+++ b/tests/view_tests/views.py
@@ -131,6 +131,11 @@ def raises_template_does_not_exist(request, path='i_dont_exist.html'):
except TemplateDoesNotExist:
return technical_500_response(request, *sys.exc_info())
+def render_no_template(request):
+ # If we do not specify a template, we need to make sure the debug
+ # view doesn't blow up.
+ return render(request, [], {})
+
def send_log(request, exc_info):
logger = getLogger('django.request')
# The default logging config has a logging filter to ensure admin emails are