Changeset 1807
- Timestamp:
- 12/30/05 18:08:49 (3 years ago)
- Files:
-
- django/branches/magic-removal/django/core/handlers/base.py (modified) (6 diffs)
- django/branches/magic-removal/django/core/handlers/modpython.py (modified) (3 diffs)
- django/branches/magic-removal/django/core/handlers/wsgi.py (modified) (3 diffs)
- django/branches/magic-removal/django/core/signals.py (added)
- django/branches/magic-removal/django/db/__init__.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/magic-removal/django/core/handlers/base.py
r1638 r1807 1 from django.core import signals 2 from django.dispatch import dispatcher 1 3 from django.utils import httpwrappers 2 4 … … 49 51 "Returns an HttpResponse object for the given HttpRequest" 50 52 from django.core import exceptions, urlresolvers 51 from django.db import connection, DatabaseError52 53 from django.core.mail import mail_admins 53 54 from django.conf.settings import DEBUG, INTERNAL_IPS, ROOT_URLCONF 54 55 # Reset query list per request.56 connection.queries = []57 55 58 56 # Apply request middleware … … 95 93 callback, param_dict = resolver.resolve404() 96 94 return callback(request, **param_dict) 97 except DatabaseError:98 connection.rollback()99 if DEBUG:100 return self.get_technical_error_response(request)101 else:102 subject = 'Database error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in INTERNAL_IPS and 'internal' or 'EXTERNAL'), getattr(request, 'path', ''))103 message = "%s\n\n%s" % (self._get_traceback(), request)104 mail_admins(subject, message, fail_silently=True)105 return self.get_friendly_error_response(request, resolver)106 95 except exceptions.PermissionDenied: 107 96 return httpwrappers.HttpResponseForbidden('<h1>Permission denied</h1>') … … 110 99 return self.get_technical_error_response(request) 111 100 else: 112 subject = 'Coding error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in INTERNAL_IPS and 'internal' or 'EXTERNAL'), getattr(request, 'path', '')) 101 receivers = dispatcher.send(signal=signals.got_request_exception) 102 # When DEBUG is False, send an error message to the admins. 103 subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in INTERNAL_IPS and 'internal' or 'EXTERNAL'), getattr(request, 'path', '')) 113 104 try: 114 105 request_repr = repr(request) … … 122 113 """ 123 114 Returns an HttpResponse that displays a PUBLIC error message for a 124 fundamental database or codingerror.115 fundamental error. 125 116 """ 126 117 from django.core import urlresolvers … … 131 122 """ 132 123 Returns an HttpResponse that displays a TECHNICAL error message for a 133 fundamental database or codingerror.124 fundamental error. 134 125 """ 135 126 import sys django/branches/magic-removal/django/core/handlers/modpython.py
r1649 r1807 1 1 from django.core.handlers.base import BaseHandler 2 from django.core import signals 3 from django.dispatch import dispatcher 2 4 from django.utils import datastructures, httpwrappers 3 5 from pprint import pformat … … 129 131 # that use settings now can work 130 132 from django.conf import settings 131 from django.db import connection132 133 133 134 # if we need to set up middleware, now that settings works we can do it now. … … 135 136 self.load_middleware() 136 137 138 dispatcher.send(signal=signals.request_started) 137 139 try: 138 140 request = ModPythonRequest(req) 139 141 response = self.get_response(req.uri, request) 140 142 finally: 141 connection.close()143 dispatcher.send(signal=signals.request_finished) 142 144 143 145 # Apply response middleware django/branches/magic-removal/django/core/handlers/wsgi.py
r1649 r1807 1 1 from django.core.handlers.base import BaseHandler 2 from django.core import signals 3 from django.dispatch import dispatcher 2 4 from django.utils import datastructures, httpwrappers 3 5 from pprint import pformat … … 144 146 def __call__(self, environ, start_response): 145 147 from django.conf import settings 146 from django.db import connection147 148 148 149 # Set up middleware if needed. We couldn't do this earlier, because … … 151 152 self.load_middleware() 152 153 154 dispatcher.send(signal=signals.request_started) 153 155 try: 154 156 request = WSGIRequest(environ) 155 157 response = self.get_response(request.path, request) 156 158 finally: 157 connection.close()159 dispatcher.send(signal=signals.request_finished) 158 160 159 161 # Apply response middleware django/branches/magic-removal/django/db/__init__.py
r1806 r1807 1 1 from django.conf.settings import DATABASE_ENGINE 2 from django.core import signals 3 from django.dispatch import dispatcher 2 4 3 5 __all__ = ('backend', 'connection', 'DatabaseError') … … 24 26 connection = backend.DatabaseWrapper() 25 27 DatabaseError = backend.DatabaseError 28 29 # Register an event that closes the database connection 30 # when a Django request is finished. 31 dispatcher.connect(lambda: connection.close(), signal=signals.request_finished) 32 33 # Register an event that resets connection.queries 34 # when a Django request is started. 35 def reset_queries(): 36 connection.queries = [] 37 dispatcher.connect(reset_queries, signal=signals.request_started) 38 39 # Register an event that rolls back the connection 40 # when a Django request has an exception. 41 dispatcher.connect(lambda: connection.rollback(), signal=signals.got_request_exception)
