summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Plant <L.Plant.98@cantab.net>2008-05-16 23:24:36 +0000
committerLuke Plant <L.Plant.98@cantab.net>2008-05-16 23:24:36 +0000
commit8c9fceebb1c682401779956a787d73710feb5e6d (patch)
tree3a15eedbbeb178f6f4197451b1a6959c7ab8a667
parent6f76b9f58d3b34d71f31d088dc629d3337aef24e (diff)
Added DEBUG_PROPAGATE_EXCEPTIONS setting that helps testing under e.g. twill
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7537 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/global_settings.py4
-rw-r--r--django/core/handlers/base.py5
-rw-r--r--docs/settings.txt10
3 files changed, 18 insertions, 1 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index e69f27660f..8eea31b0db 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -11,6 +11,10 @@ gettext_noop = lambda s: s
DEBUG = False
TEMPLATE_DEBUG = False
+# True if BaseHandler.get_response() should propagate raw exceptions
+# rather than catching them. This is useful under some testing siutations,
+# and should never be used on a live site.
+DEBUG_PROPAGATE_EXCEPTIONS = False
# Whether to use the "Etag" header. This saves bandwidth but slows down performance.
USE_ETAGS = False
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index a81bec322f..1fdd7c3d6b 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -115,7 +115,10 @@ class BaseHandler(object):
# Get the exception info now, in case another exception is thrown later.
exc_info = sys.exc_info()
receivers = dispatcher.send(signal=signals.got_request_exception, request=request)
- if settings.DEBUG:
+
+ if settings.DEBUG_PROPAGATE_EXCEPTIONS:
+ raise
+ elif settings.DEBUG:
from django.views import debug
return debug.technical_500_response(request, *exc_info)
else:
diff --git a/docs/settings.txt b/docs/settings.txt
index 5aee19102b..5f1804fb80 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -391,6 +391,16 @@ are inappropriate for public consumption. File paths, configuration options, and
the like all give attackers extra information about your server. Never deploy a
site with ``DEBUG`` turned on.
+DEBUG_PROPAGATE_EXCEPTIONS
+--------------------
+
+Default: ``False``
+
+If set to True, Django's normal exception handling of view functions
+will be suppressed, and exceptions will propagate upwards. This can
+be useful for some test setups, and should never be used on a live
+site.
+
DEFAULT_CHARSET
---------------