|
@@ -2,7 +2,6 @@
|
|
|
# This is based on sendfiles builtin "simple" backend but uses a StreamingHttpResponse
|
|
|
|
|
|
import os
|
|
|
-import re
|
|
|
import stat
|
|
|
from email.utils import mktime_tz, parsedate_tz
|
|
|
from wsgiref.util import FileWrapper
|
|
@@ -18,7 +17,6 @@ def sendfile(request, filename, **kwargs):
|
|
|
if not was_modified_since(
|
|
|
request.META.get("HTTP_IF_MODIFIED_SINCE"),
|
|
|
statobj[stat.ST_MTIME],
|
|
|
- statobj[stat.ST_SIZE],
|
|
|
):
|
|
|
return HttpResponseNotModified()
|
|
|
|
|
@@ -28,7 +26,7 @@ def sendfile(request, filename, **kwargs):
|
|
|
return response
|
|
|
|
|
|
|
|
|
-def was_modified_since(header=None, mtime=0, size=0):
|
|
|
+def was_modified_since(header=None, mtime=0):
|
|
|
"""
|
|
|
Was something modified since the user last downloaded it?
|
|
|
|
|
@@ -38,23 +36,16 @@ def was_modified_since(header=None, mtime=0, size=0):
|
|
|
|
|
|
mtime
|
|
|
This is the modification time of the item we're talking about.
|
|
|
-
|
|
|
- size
|
|
|
- This is the size of the item we're talking about.
|
|
|
"""
|
|
|
try:
|
|
|
if header is None:
|
|
|
raise ValueError
|
|
|
- matches = re.match(r"^([^;]+)(; length=([0-9]+))?$", header, re.IGNORECASE)
|
|
|
- header_date = parsedate_tz(matches.group(1))
|
|
|
+ header_date = parsedate_tz(header)
|
|
|
if header_date is None:
|
|
|
raise ValueError
|
|
|
header_mtime = mktime_tz(header_date)
|
|
|
- header_len = matches.group(3)
|
|
|
- if header_len and int(header_len) != size:
|
|
|
- raise ValueError
|
|
|
if mtime > header_mtime:
|
|
|
raise ValueError
|
|
|
- except (AttributeError, ValueError, OverflowError):
|
|
|
+ except (ValueError, OverflowError):
|
|
|
return True
|
|
|
return False
|