Commit da200c5e authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed #16519 -- Deprecated mimetype kwarg of HttpResponse __init__

This keyword was already deprecated in the code (supported for
backwards compatibility only), but never formally deprecated.
Thanks Paul McMillan for the report and yasar11732 for the initial
patch.
parent deed192d
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -524,14 +524,16 @@ class HttpResponse(object):

    status_code = 200

    def __init__(self, content='', mimetype=None, status=None,
            content_type=None):
    def __init__(self, content='', content_type=None, status=None,
            mimetype=None):
        # _headers is a mapping of the lower-case name to the original case of
        # the header (required for working with legacy systems) and the header
        # value. Both the name of the header and its value are ASCII strings.
        self._headers = {}
        self._charset = settings.DEFAULT_CHARSET
        if mimetype: # For backwards compatibility.
        if mimetype:
            warnings.warn("Using mimetype keyword argument is deprecated, use"
                          " content_type instead", PendingDeprecationWarning)
            content_type = mimetype
        if not content_type:
            content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE,
+7 −7
Original line number Diff line number Diff line
@@ -9,8 +9,8 @@ class ContentNotRenderedError(Exception):
class SimpleTemplateResponse(HttpResponse):
    rendering_attrs = ['template_name', 'context_data', '_post_render_callbacks']

    def __init__(self, template, context=None, mimetype=None, status=None,
            content_type=None):
    def __init__(self, template, context=None, content_type=None, status=None,
            mimetype=None):
        # It would seem obvious to call these next two members 'template' and
        # 'context', but those names are reserved as part of the test Client
        # API. To avoid the name collision, we use tricky-to-debug problems
@@ -22,8 +22,8 @@ class SimpleTemplateResponse(HttpResponse):
        # content argument doesn't make sense here because it will be replaced
        # with rendered template so we always pass empty string in order to
        # prevent errors and provide shorter signature.
        super(SimpleTemplateResponse, self).__init__('', mimetype, status,
                                                     content_type)
        super(SimpleTemplateResponse, self).__init__('', content_type, status,
                                                     mimetype)

        # _is_rendered tracks whether the template and context has been baked
        # into a final response.
@@ -137,8 +137,8 @@ class TemplateResponse(SimpleTemplateResponse):
    rendering_attrs = SimpleTemplateResponse.rendering_attrs + \
        ['_request', '_current_app']

    def __init__(self, request, template, context=None, mimetype=None,
            status=None, content_type=None, current_app=None):
    def __init__(self, request, template, context=None, content_type=None,
            status=None, mimetype=None, current_app=None):
        # self.request gets over-written by django.test.client.Client - and
        # unlike context_data and template_name the _request should not
        # be considered part of the public API.
@@ -147,7 +147,7 @@ class TemplateResponse(SimpleTemplateResponse):
        # having to avoid needing to create the RequestContext directly
        self._current_app = current_app
        super(TemplateResponse, self).__init__(
            template, context, mimetype, status, content_type)
            template, context, content_type, status, mimetype)

    def resolve_context(self, context):
        """Convert context data into a full RequestContext object
+3 −0
Original line number Diff line number Diff line
@@ -280,6 +280,9 @@ these changes.
  specified as a plain string instead of a tuple will be removed and raise an
  exception.

* The ``mimetype`` argument to :class:`~django.http.HttpResponse` ``__init__``
  will be removed (``content_type`` should be used instead).

2.0
---

+10 −11
Original line number Diff line number Diff line
@@ -606,11 +606,10 @@ Attributes
Methods
-------

.. method:: HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE)
.. method:: HttpResponse.__init__(content='', content_type=None, status=200)

    Instantiates an ``HttpResponse`` object with the given page content (a
    string) and MIME type. The :setting:`DEFAULT_CONTENT_TYPE` is
    ``'text/html'``.
    Instantiates an ``HttpResponse`` object with the given page content and
    content type.

    ``content`` should be an iterator or a string. If it's an
    iterator, it should return strings, and those strings will be
@@ -618,15 +617,15 @@ Methods
    an iterator or a string, it will be converted to a string when
    accessed.

    ``content_type`` is the MIME type optionally completed by a character set
    encoding and is used to fill the HTTP ``Content-Type`` header. If not
    specified, it is formed by the :setting:`DEFAULT_CONTENT_TYPE` and
    :setting:`DEFAULT_CHARSET` settings, by default: "`text/html; charset=utf-8`".

    Historically, this parameter was called ``mimetype`` (now deprecated).

    ``status`` is the `HTTP Status code`_ for the response.

    ``content_type`` is an alias for ``mimetype``. Historically, this parameter
    was only called ``mimetype``, but since this is actually the value included
    in the HTTP ``Content-Type`` header, it can also include the character set
    encoding, which makes it more than just a MIME type specification.
    If ``mimetype`` is specified (not ``None``), that value is used.
    Otherwise, ``content_type`` is used. If neither is given, the
    :setting:`DEFAULT_CONTENT_TYPE` setting is used.

.. method:: HttpResponse.__setitem__(header, value)