From c3fa47edb85fa0b3d77a3ca864990d6b5dba3ff0 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Wed, 5 Oct 2005 23:36:17 +0000 Subject: [PATCH] Added USE_FLAT_PAGES setting, which defaults to True. git-svn-id: http://code.djangoproject.com/svn/django/trunk@782 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 3 +++ django/middleware/common.py | 34 ++++++++++++++++------------------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index c5e560c9e19..0d9a50148d8 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -100,6 +100,9 @@ ALLOWED_INCLUDE_ROOTS = () # is an admin. ADMIN_FOR = [] +# Whether to check the flat-pages table as a last resort for all 404 errors. +USE_FLAT_PAGES = True + # 404s that may be ignored. IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf') IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php') diff --git a/django/middleware/common.py b/django/middleware/common.py index ee6b68be7e0..4abe4ee2368 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -54,29 +54,27 @@ class CommonMiddleware: return None def process_response(self, request, response): - """ - Check for a flatfile (for 404s) and calculate the Etag, if needed. - """ - - # If this was a 404, check for a flat file + "Check for a flat page (for 404s) and calculate the Etag, if needed." if response.status_code == 404: - try: - response = flat_file(request, request.path) - except exceptions.Http404: + if settings.USE_FLAT_PAGES: + try: + return flat_file(request, request.path) + except exceptions.Http404: + pass + + if settings.SEND_BROKEN_LINK_EMAILS: # If the referrer was from an internal link or a non-search-engine site, # send a note to the managers. - if settings.SEND_BROKEN_LINK_EMAILS: - domain = request.META['HTTP_HOST'] - referer = request.META.get('HTTP_REFERER', None) - is_internal = referer and (domain in referer) - path = request.get_full_path() - if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer): - mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain), - "Referrer: %s\nRequested URL: %s\n" % (referer, request.get_full_path())) - # If there's no flatfile we want to return the original 404 response + domain = request.META['HTTP_HOST'] + referer = request.META.get('HTTP_REFERER', None) + is_internal = referer and (domain in referer) + path = request.get_full_path() + if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer): + mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain), + "Referrer: %s\nRequested URL: %s\n" % (referer, request.get_full_path())) return response - # Use ETags, if requested + # Use ETags, if requested. if settings.USE_ETAGS: etag = md5.new(response.get_content_as_string('utf-8')).hexdigest() if request.META.get('HTTP_IF_NONE_MATCH') == etag: