.. _internals-deprecation:

===========================
Django Deprecation Timeline
===========================

This document outlines when various pieces of Django will be removed, following
their deprecation, as per the :ref:`Django deprecation policy
<internal-release-deprecation-policy>`

    * 1.3
        * ``AdminSite.root()``.  This release will remove the old method for
          hooking up admin URLs.  This has been deprecated since the 1.1
          release.

        * Authentication backends need to define the boolean attribute
          ``supports_object_permissions``. The old backend style is deprecated
          since the 1.2 release.

    * 1.4
        * ``CsrfResponseMiddleware``.  This has been deprecated since the 1.2
          release, in favour of the template tag method for inserting the CSRF
          token.  ``CsrfMiddleware``, which combines ``CsrfResponseMiddleware``
          and ``CsrfViewMiddleware``, is also deprecated.

        * The old imports for CSRF functionality (``django.contrib.csrf.*``),
          which moved to core in 1.2, will be removed.

        * ``SMTPConnection``. The 1.2 release deprecated the ``SMTPConnection``
          class in favor of a generic E-mail backend API.

        * The many to many SQL generation functions on the database backends
          will be removed.  These have been deprecated since the 1.2 release.

        * The ``Message`` model (in ``django.contrib.auth``), its related
          manager in the ``User`` model (``user.message_set``), and the
          associated methods (``user.message_set.create()`` and
          ``user.get_and_delete_messages()``), which have
          been deprecated since the 1.2 release, will be removed.  The
          :ref:`messages framework <ref-contrib-messages>` should be used
          instead.

        * Authentication backends need to support the ``obj`` parameter for
          permission checking. The ``supports_object_permissions`` variable
          is not checked any longer and can be removed.

        * The ability to specify a callable template loader rather than a
          ``Loader`` class will be removed, as will the ``load_template_source``
          functions that are included with the built in template loaders for
          backwards compatibility. These have been deprecated since the 1.2
          release.

    * 2.0
        * ``django.views.defaults.shortcut()``. This function has been moved
          to ``django.contrib.contenttypes.views.shortcut()`` as part of the
          goal of removing all ``django.contrib`` references from the core
          Django codebase. The old shortcut will be removed in the 2.0
          release.
