Refs #28965 -- Removed utils.http.cookie_date() per deprecation timeline.

This commit is contained in:
Tim Graham 2018-12-27 20:35:20 -05:00
parent 6f23996a59
commit 958a7b4ca6
4 changed files with 6 additions and 45 deletions

View File

@ -3,7 +3,6 @@ import calendar
import datetime import datetime
import re import re
import unicodedata import unicodedata
import warnings
from binascii import Error as BinasciiError from binascii import Error as BinasciiError
from email.utils import formatdate from email.utils import formatdate
from urllib.parse import ( from urllib.parse import (
@ -14,7 +13,6 @@ from urllib.parse import (
from django.core.exceptions import TooManyFieldsSent from django.core.exceptions import TooManyFieldsSent
from django.utils.datastructures import MultiValueDict from django.utils.datastructures import MultiValueDict
from django.utils.deprecation import RemovedInDjango30Warning
from django.utils.functional import keep_lazy_text from django.utils.functional import keep_lazy_text
# based on RFC 7232, Appendix C # based on RFC 7232, Appendix C
@ -120,25 +118,6 @@ def urlencode(query, doseq=False):
return original_urlencode(query_params, doseq) return original_urlencode(query_params, doseq)
def cookie_date(epoch_seconds=None):
"""
Format the time to ensure compatibility with Netscape's cookie standard.
`epoch_seconds` is a floating point number expressed in seconds since the
epoch, in UTC - such as that outputted by time.time(). If set to None, it
defaults to the current time.
Output a string in the format 'Wdy, DD-Mon-YYYY HH:MM:SS GMT'.
"""
warnings.warn(
'cookie_date() is deprecated in favor of http_date(), which follows '
'the format of the latest RFC.',
RemovedInDjango30Warning, stacklevel=2,
)
rfcdate = formatdate(epoch_seconds)
return '%s-%s-%s GMT' % (rfcdate[:7], rfcdate[8:11], rfcdate[12:25])
def http_date(epoch_seconds=None): def http_date(epoch_seconds=None):
""" """
Format the time to match the RFC1123 date format as specified by HTTP Format the time to match the RFC1123 date format as specified by HTTP

View File

@ -700,20 +700,6 @@ escaping HTML.
A version of Python's :func:`urllib.parse.urlencode` function that can A version of Python's :func:`urllib.parse.urlencode` function that can
operate on ``MultiValueDict`` and non-string values. operate on ``MultiValueDict`` and non-string values.
.. function:: cookie_date(epoch_seconds=None)
.. deprecated:: 2.1
Use :func:`http_date` instead, which follows the latest RFC.
Formats the time to ensure compatibility with Netscape's cookie standard.
Accepts a floating point number expressed in seconds since the epoch in
UTC--such as that outputted by ``time.time()``. If set to ``None``,
defaults to the current time.
Outputs a string in the format ``Wdy, DD-Mon-YYYY HH:MM:SS GMT``.
.. function:: http_date(epoch_seconds=None) .. function:: http_date(epoch_seconds=None)
Formats the time to match the :rfc:`1123` date format as specified by HTTP Formats the time to match the :rfc:`1123` date format as specified by HTTP

View File

@ -254,3 +254,5 @@ See :ref:`deprecated-features-2.1` for details on these changes, including how
to remove usage of these features. to remove usage of these features.
* The ``ForceRHR`` GIS function is removed. * The ``ForceRHR`` GIS function is removed.
* ``django.utils.http.cookie_date()`` is removed.

View File

@ -1,13 +1,12 @@
import unittest import unittest
from datetime import datetime from datetime import datetime
from django.test import SimpleTestCase, ignore_warnings from django.test import SimpleTestCase
from django.utils.datastructures import MultiValueDict from django.utils.datastructures import MultiValueDict
from django.utils.deprecation import RemovedInDjango30Warning
from django.utils.http import ( from django.utils.http import (
base36_to_int, cookie_date, escape_leading_slashes, http_date, base36_to_int, escape_leading_slashes, http_date, int_to_base36,
int_to_base36, is_safe_url, is_same_domain, parse_etags, parse_http_date, is_safe_url, is_same_domain, parse_etags, parse_http_date, quote_etag,
quote_etag, urlencode, urlquote, urlquote_plus, urlsafe_base64_decode, urlencode, urlquote, urlquote_plus, urlsafe_base64_decode,
urlsafe_base64_encode, urlunquote, urlunquote_plus, urlsafe_base64_encode, urlunquote, urlunquote_plus,
) )
@ -279,11 +278,6 @@ class HttpDateProcessingTests(unittest.TestCase):
t = 1167616461.0 t = 1167616461.0
self.assertEqual(http_date(t), 'Mon, 01 Jan 2007 01:54:21 GMT') self.assertEqual(http_date(t), 'Mon, 01 Jan 2007 01:54:21 GMT')
@ignore_warnings(category=RemovedInDjango30Warning)
def test_cookie_date(self):
t = 1167616461.0
self.assertEqual(cookie_date(t), 'Mon, 01-Jan-2007 01:54:21 GMT')
def test_parsing_rfc1123(self): def test_parsing_rfc1123(self):
parsed = parse_http_date('Sun, 06 Nov 1994 08:49:37 GMT') parsed = parse_http_date('Sun, 06 Nov 1994 08:49:37 GMT')
self.assertEqual(datetime.utcfromtimestamp(parsed), datetime(1994, 11, 6, 8, 49, 37)) self.assertEqual(datetime.utcfromtimestamp(parsed), datetime(1994, 11, 6, 8, 49, 37))