Commit 122020fd authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

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.
parents e844e10b e12de0ac
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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()
+1 −0
Original line number Diff line number Diff line
@@ -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'),
)
+5 −0
Original line number Diff line number Diff line
@@ -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