diff options
| author | Nick Pope <nick@nickpope.me.uk> | 2023-11-21 17:13:08 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-28 06:19:38 +0100 |
| commit | 6089230d3ec580f2f44e85f23962c14905fefcfd (patch) | |
| tree | eb243025bb58a778e16466fe96dac9dbc067bb95 /django/utils/http.py | |
| parent | 0fcd72bc48eade21ce9202d7a71692f9b5a42bd2 (diff) | |
Refs #34986 -- Fixed mocking in utils_tests.test_http.HttpDateProcessingTests.test_parsing_rfc850.
Mocking in the `datetime` module can be tricky. In CPython the datetime
C module is used, but PyPy uses a pure Python implementation. This
caused issues with the prior approach to mocking `datetime.datetime`.
See https://docs.python.org/3/library/unittest.mock-examples.html#partial-mocking
Diffstat (limited to 'django/utils/http.py')
| -rw-r--r-- | django/utils/http.py | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/django/utils/http.py b/django/utils/http.py index cfd982fc01..78dfee7fee 100644 --- a/django/utils/http.py +++ b/django/utils/http.py @@ -1,8 +1,8 @@ import base64 -import datetime import re import unicodedata from binascii import Error as BinasciiError +from datetime import datetime, timezone from email.utils import formatdate from urllib.parse import quote, unquote from urllib.parse import urlencode as original_urlencode @@ -113,10 +113,9 @@ def parse_http_date(date): else: raise ValueError("%r is not in a valid HTTP date format" % date) try: - tz = datetime.timezone.utc year = int(m["year"]) if year < 100: - current_year = datetime.datetime.now(tz=tz).year + current_year = datetime.now(tz=timezone.utc).year current_century = current_year - (current_year % 100) if year - (current_year % 100) > 50: # year that appears to be more than 50 years in the future are @@ -129,7 +128,7 @@ def parse_http_date(date): hour = int(m["hour"]) min = int(m["min"]) sec = int(m["sec"]) - result = datetime.datetime(year, month, day, hour, min, sec, tzinfo=tz) + result = datetime(year, month, day, hour, min, sec, tzinfo=timezone.utc) return int(result.timestamp()) except Exception as exc: raise ValueError("%r is not a valid date" % date) from exc |
