Ticket #1551: patch.txt

File patch.txt, 2.1 KB (added by ned@…, 18 years ago)

The patch!

Line 
1--- base.py (revision 3393)
2+++ base.py (revision 3596)
3@@ -1,7 +1,8 @@
4 from django.utils import httpwrappers
5+import sys
6
7 class BaseHandler:
8 def __init__(self):
9 self._request_middleware = self._view_middleware = self._response_middleware = self._exception_middleware = None
10
11 def load_middleware(self):
12@@ -105,18 +106,19 @@
13 except exceptions.PermissionDenied:
14 return httpwrappers.HttpResponseForbidden('<h1>Permission denied</h1>')
15 except: # Handle everything else, including SuspiciousOperation, etc.
16 if DEBUG:
17 return self.get_technical_error_response(request)
18 else:
19+ exc_info = sys.exc_info()
20 subject = 'Coding error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in INTERNAL_IPS and 'internal' or 'EXTERNAL'), getattr(request, 'path', ''))
21 try:
22 request_repr = repr(request)
23 except:
24 request_repr = "Request repr() unavailable"
25- message = "%s\n\n%s" % (self._get_traceback(), request_repr)
26+ message = "%s\n\n%s" % (self._get_traceback(exc_info), request_repr)
27 mail_admins(subject, message, fail_silently=True)
28 return self.get_friendly_error_response(request, resolver)
29
30 def get_friendly_error_response(self, request, resolver):
31 """
32 Returns an HttpResponse that displays a PUBLIC error message for a
33@@ -135,10 +137,10 @@
34 from django.views import debug
35 if is404:
36 return debug.technical_404_response(request, exception)
37 else:
38 return debug.technical_500_response(request, *sys.exc_info())
39
40- def _get_traceback(self):
41+ def _get_traceback(self, exc_info=None):
42 "Helper function to return the traceback as a string"
43 import sys, traceback
44- return '\n'.join(traceback.format_exception(*sys.exc_info()))
45+ return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info())))
Back to Top