summaryrefslogtreecommitdiff
path: root/django/middleware/common.py
diff options
context:
space:
mode:
authorDenis Cornehl <syphar@fastmail.fm>2015-06-05 14:26:48 +0100
committerTim Graham <timograham@gmail.com>2015-08-15 09:08:45 -0400
commit7a40fef17ab7918cbb1ddc3ba080f42b420f7a48 (patch)
treed5514a1ea0e059da9a9338beb0c1236a05a6b5bd /django/middleware/common.py
parent1f7b25c1a7a85426675a04380f37b180edc08bbc (diff)
Fixed #24935 -- Refactored common conditional GET handling.
Diffstat (limited to 'django/middleware/common.py')
-rw-r--r--django/middleware/common.py23
1 files changed, 9 insertions, 14 deletions
diff --git a/django/middleware/common.py b/django/middleware/common.py
index 6773eff614..376e82b939 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -1,4 +1,3 @@
-import hashlib
import logging
import re
@@ -7,6 +6,7 @@ from django.conf import settings
from django.core import urlresolvers
from django.core.exceptions import PermissionDenied
from django.core.mail import mail_managers
+from django.utils.cache import get_conditional_response, set_response_etag
from django.utils.encoding import force_text
logger = logging.getLogger('django.request')
@@ -113,20 +113,15 @@ class CommonMiddleware(object):
return self.response_redirect_class(self.get_full_path_with_slash(request))
if settings.USE_ETAGS:
+ if not response.has_header('ETag'):
+ set_response_etag(response)
+
if response.has_header('ETag'):
- etag = response['ETag']
- elif response.streaming:
- etag = None
- else:
- etag = '"%s"' % hashlib.md5(response.content).hexdigest()
- if etag is not None:
- if (200 <= response.status_code < 300
- and request.META.get('HTTP_IF_NONE_MATCH') == etag):
- cookies = response.cookies
- response = http.HttpResponseNotModified()
- response.cookies = cookies
- else:
- response['ETag'] = etag
+ return get_conditional_response(
+ request,
+ etag=response['ETag'],
+ response=response,
+ )
return response