Author: ramiro
Date: 2011-01-20 17:17:37 -0600 (Thu, 20 Jan 2011)
New Revision: 15253

Modified:
   django/branches/releases/1.2.X/django/views/debug.py
   django/branches/releases/1.2.X/tests/regressiontests/views/tests/debug.py
   django/branches/releases/1.2.X/tests/regressiontests/views/urls.py
   django/branches/releases/1.2.X/tests/regressiontests/views/views.py
Log:
[1.2.X] Fixed #15122 -- Restored reporting of the template files tried in the 
texmplate loader post mortem section of the TemplateDoesNotExit 500 error debug 
page. Thanks rdrey for reporting this regression.

Backport of [15252] from trunk

Modified: django/branches/releases/1.2.X/django/views/debug.py
===================================================================
--- django/branches/releases/1.2.X/django/views/debug.py        2011-01-20 
22:33:58 UTC (rev 15252)
+++ django/branches/releases/1.2.X/django/views/debug.py        2011-01-20 
23:17:37 UTC (rev 15253)
@@ -88,17 +88,18 @@
             for loader in template_source_loaders:
                 try:
                     module = import_module(loader.__module__)
-                    source_list_func = module.get_template_sources
+                    if hasattr(loader, '__class__'):
+                        source_list_func = loader.get_template_sources
+                        loader_name = loader.__module__ + '.' + 
loader.__class__.__name__
+                    else: # NOTE: Remember to remove this branch when we 
deprecate old template loaders in 1.4
+                        source_list_func = module.get_template_sources
+                        loader_name = loader.__module__ + '.' + loader.__name__
                     # NOTE: This assumes exc_value is the name of the template 
that
                     # the loader attempted to load.
                     template_list = [{'name': t, 'exists': os.path.exists(t)} \
                         for t in source_list_func(str(self.exc_value))]
                 except (ImportError, AttributeError):
                     template_list = []
-                if hasattr(loader, '__class__'):
-                    loader_name = loader.__module__ + '.' + 
loader.__class__.__name__
-                else:
-                    loader_name = loader.__module__ + '.' + loader.__name__
                 self.loader_debug_info.append({
                     'loader': loader_name,
                     'templates': template_list,

Modified: 
django/branches/releases/1.2.X/tests/regressiontests/views/tests/debug.py
===================================================================
--- django/branches/releases/1.2.X/tests/regressiontests/views/tests/debug.py   
2011-01-20 22:33:58 UTC (rev 15252)
+++ django/branches/releases/1.2.X/tests/regressiontests/views/tests/debug.py   
2011-01-20 23:17:37 UTC (rev 15253)
@@ -48,3 +48,7 @@
                 self.assertFalse(raising_loc.find('raise BrokenException') == 
-1,
                     "Failed to find 'raise BrokenException' in last frame of 
traceback, instead found: %s" %
                         raising_loc)
+
+    def test_template_loader_postmortem(self):
+        response = self.client.get(reverse('raises_template_does_not_exist'))
+        self.assertContains(response, 'templates/i_dont_exist.html</code> 
(File does not exist)</li>', status_code=500)

Modified: django/branches/releases/1.2.X/tests/regressiontests/views/urls.py
===================================================================
--- django/branches/releases/1.2.X/tests/regressiontests/views/urls.py  
2011-01-20 22:33:58 UTC (rev 15252)
+++ django/branches/releases/1.2.X/tests/regressiontests/views/urls.py  
2011-01-20 23:17:37 UTC (rev 15253)
@@ -128,4 +128,5 @@
 urlpatterns += patterns('regressiontests.views.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/$', 
'raises_template_does_not_exist', name='raises_template_does_not_exist'),
 )

Modified: django/branches/releases/1.2.X/tests/regressiontests/views/views.py
===================================================================
--- django/branches/releases/1.2.X/tests/regressiontests/views/views.py 
2011-01-20 22:33:58 UTC (rev 15252)
+++ django/branches/releases/1.2.X/tests/regressiontests/views/views.py 
2011-01-20 23:17:37 UTC (rev 15253)
@@ -1,11 +1,12 @@
 import sys
 
+from django import forms
 from django.http import HttpResponse, HttpResponseRedirect
-from django import forms
+from django.core.urlresolvers import get_resolver
+from django.shortcuts import render_to_response
+from django.template import TemplateDoesNotExist
 from django.views.debug import technical_500_response
 from django.views.generic.create_update import create_object
-from django.core.urlresolvers import get_resolver
-from django.shortcuts import render_to_response
 
 from regressiontests.views import BrokenException, except_args
 
@@ -57,3 +58,11 @@
     return render_to_response('debug/template_exception.html',
         {'arg': except_args[int(n)]})
 
+def raises_template_does_not_exist(request):
+    # We need to inspect the HTML generated by the fancy 500 debug view but
+    # the test client ignores it, so we send it explicitly.
+    try:
+        return render_to_response('i_dont_exist.html')
+    except TemplateDoesNotExist:
+        return technical_500_response(request, *sys.exc_info())
+

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@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