diff options
| author | Denis Cornehl <syphar@fastmail.fm> | 2015-06-05 14:26:48 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-08-15 09:08:45 -0400 |
| commit | 7a40fef17ab7918cbb1ddc3ba080f42b420f7a48 (patch) | |
| tree | d5514a1ea0e059da9a9338beb0c1236a05a6b5bd /django/middleware/common.py | |
| parent | 1f7b25c1a7a85426675a04380f37b180edc08bbc (diff) | |
Fixed #24935 -- Refactored common conditional GET handling.
Diffstat (limited to 'django/middleware/common.py')
| -rw-r--r-- | django/middleware/common.py | 23 |
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 |
