Browse Source

Reordered deprecation timeline and added back old info; refs #21920.

Tim Graham 11 years ago
parent
commit
d4a5019bef
5 changed files with 426 additions and 117 deletions
  1. 410 109
      docs/internals/deprecation.txt
  2. 5 3
      docs/releases/1.4.txt
  3. 5 3
      docs/releases/1.5.txt
  4. 3 1
      docs/releases/1.6.txt
  5. 3 1
      docs/releases/1.7.txt

+ 410 - 109
docs/internals/deprecation.txt

@@ -7,70 +7,123 @@ in a backward incompatible way, following their deprecation, as per the
 :ref:`deprecation policy <internal-release-deprecation-policy>`. More details
 about each item can often be found in the release notes of two versions prior.
 
-1.7
+.. _deprecation-removed-in-2.0:
+
+2.0
 ---
 
-See the :doc:`Django 1.5 release notes</releases/1.5>` for more details on
-these changes.
+* ``ssi`` and ``url`` template tags will be removed from the ``future`` template
+  tag library (used during the 1.3/1.4 deprecation period).
 
-* The module ``django.utils.simplejson`` will be removed. The standard library
-  provides :mod:`json` which should be used instead.
+.. _deprecation-removed-in-1.9:
 
-* The function ``django.utils.itercompat.product`` will be removed. The Python
-  builtin version should be used instead.
+1.9
+---
 
-* Auto-correction of INSTALLED_APPS and TEMPLATE_DIRS settings when they are
-  specified as a plain string instead of a tuple will be removed and raise an
-  exception.
+See the :ref:`Django 1.7 release notes<deprecated-features-1.7>` for more
+details on these changes.
 
-* The ``mimetype`` argument to the ``__init__`` methods of
-  :class:`~django.http.HttpResponse`,
-  :class:`~django.template.response.SimpleTemplateResponse`, and
-  :class:`~django.template.response.TemplateResponse`, will be removed.
-  ``content_type`` should be used instead. This also applies to the
-  :func:`~django.shortcuts.render_to_response` shortcut and
-  the sitemap views, :func:`~django.contrib.sitemaps.views.index` and
-  :func:`~django.contrib.sitemaps.views.sitemap`.
+* ``django.utils.dictconfig`` will be removed.
 
-* When :class:`~django.http.HttpResponse` is instantiated with an iterator,
-  or when :attr:`~django.http.HttpResponse.content` is set to an iterator,
-  that iterator will be immediately consumed.
+* ``django.utils.importlib`` will be removed.
 
-* The ``AUTH_PROFILE_MODULE`` setting, and the ``get_profile()`` method on
-  the User model, will be removed.
+* ``django.utils.tzinfo`` will be removed.
 
-* The ``cleanup`` management command will be removed. It's replaced by
-  ``clearsessions``.
+* ``django.utils.unittest`` will be removed.
 
-* The ``daily_cleanup.py`` script will be removed.
+* The ``syncdb`` command will be removed.
 
-* The ``depth`` keyword argument will be removed from
-  :meth:`~django.db.models.query.QuerySet.select_related`.
+* ``django.db.models.signals.pre_syncdb`` and
+  ``django.db.models.signals.post_syncdb`` will be removed.
 
-* The undocumented ``get_warnings_state()``/``restore_warnings_state()``
-  functions from :mod:`django.test.utils` and the ``save_warnings_state()``/
-  ``restore_warnings_state()``
-  :ref:`django.test.*TestCase <django-testcase-subclasses>` methods are
-  deprecated. Use the :class:`warnings.catch_warnings` context manager
-  available starting with Python 2.6 instead.
+* ``allow_syncdb`` on database routers will no longer automatically become
+  ``allow_migrate``.
 
-* The undocumented ``check_for_test_cookie`` method in
-  :class:`~django.contrib.auth.forms.AuthenticationForm` will be removed
-  following an accelerated deprecation. Users subclassing this form should
-  remove calls to this method, and instead ensure that their auth related views
-  are CSRF protected, which ensures that cookies are enabled.
+* All models will need to be defined inside an installed application or
+  declare an explicit :attr:`~django.db.models.Options.app_label`.
+  Furthermore, it won't be possible to import them before their application
+  is loaded. In particular, it won't be possible to import models inside
+  the root package of their application.
 
-* The version of :func:`django.contrib.auth.views.password_reset_confirm` that
-  supports base36 encoded user IDs
-  (``django.contrib.auth.views.password_reset_confirm_uidb36``) will be
-  removed. If your site has been running Django 1.6 for more than
-  :setting:`PASSWORD_RESET_TIMEOUT_DAYS`, this change will have no effect. If
-  not, then any password reset links generated before you upgrade to Django 1.7
-  won't work after the upgrade.
+* If models are organized in a package, Django will no longer look for
+  :ref:`initial SQL data<initial-sql>` in ``myapp/models/sql/``. Move your
+  custom SQL files to ``myapp/sql/``.
+
+* The model and form ``IPAddressField`` will be removed.
+
+* ``AppCommand.handle_app()`` will no longer be supported.
+
+* ``RequestSite`` will be located in ``django.contrib.sites.requests`` and
+  ``get_current_site`` in ``django.contrib.sites.shortcuts``.
+
+* FastCGI support via the ``runfcgi`` management command will be
+  removed. Please deploy your project using WSGI.
+
+* ``django.utils.datastructures.SortedDict`` will be removed. Use
+  :class:`collections.OrderedDict` from the Python standard library instead.
+
+* ``ModelAdmin.declared_fieldsets`` will be removed.
+
+* Instances of ``util.py`` in the Django codebase have been renamed to
+  ``utils.py`` in an effort to unify all util and utils references.
+  The modules that provided backwards compatibility will be removed:
+
+  * ``django.contrib.admin.util``
+  * ``django.contrib.gis.db.backends.util``
+  * ``django.db.backends.util``
+  * ``django.forms.util``
+
+* ``ModelAdmin.get_formsets`` will be removed.
+
+* Remove the backward compatible shims introduced to rename the
+  ``BaseMemcachedCache._get_memcache_timeout()`` method to
+  ``get_backend_timeout()``.
+
+* The ``--natural`` and ``-n`` options for :djadmin:`dumpdata` will be removed.
+  Use :djadminopt:`--natural-foreign` instead.
+
+* The ``use_natural_keys`` argument for ``serializers.serialize()`` will be
+  removed. Use ``use_natural_foreign_keys`` instead.
+
+* ``django.forms.get_declared_fields`` will be removed.
+
+* The ability to use a ``SplitDateTimeWidget`` with ``DateTimeField`` will be
+  removed.
+
+* The ``WSGIRequest.REQUEST`` property will be removed.
+
+* The class ``django.utils.datastructures.MergeDict`` will be removed.
+
+* The ``zh-cn`` and ``zh-tw`` language codes will be removed and have been
+  replaced by the ``zh-hans`` and ``zh-hant`` language code respectively.
+
+* The internal ``django.utils.functional.memoize`` will be removed.
+
+* ``django.core.cache.get_cache`` will be removed. Add suitable entries
+  to :setting:`CACHES` and use :data:`django.core.cache.caches` instead.
+
+* ``django.db.models.loading`` will be removed.
+
+* Passing callable arguments to querysets will no longer be possible.
+
+* ``BaseCommand.requires_model_validation`` will be removed in favor of
+  ``requires_system_checks``. Admin validators will be replaced by admin
+  checks.
+
+* ``ModelAdmin.validator`` will be removed in favor of the new ``checks``
+  attribute.
+
+* ``django.db.backends.DatabaseValidation.validate_field`` will be removed in
+  favor of the ``check_field`` method.
+
+.. _deprecation-removed-in-1.8:
 
 1.8
 ---
 
+See the :ref:`Django 1.6 release notes<deprecated-features-1.6>` for more
+details on these changes.
+
 * ``django.contrib.comments`` will be removed.
 
 * The following transaction management APIs will be removed:
@@ -151,104 +204,352 @@ these changes.
   (``django.contrib.gis.sitemaps.views.index`` and
   ``django.contrib.gis.sitemaps.views.sitemap``).
 
-1.9
+.. _deprecation-removed-in-1.7:
+
+1.7
 ---
 
-* ``django.utils.dictconfig`` will be removed.
+See the :ref:`Django 1.5 release notes<deprecated-features-1.5>` for more
+details on these changes.
 
-* ``django.utils.importlib`` will be removed.
+* The module ``django.utils.simplejson`` will be removed. The standard library
+  provides :mod:`json` which should be used instead.
 
-* ``django.utils.tzinfo`` will be removed.
+* The function ``django.utils.itercompat.product`` will be removed. The Python
+  builtin version should be used instead.
 
-* ``django.utils.unittest`` will be removed.
+* Auto-correction of INSTALLED_APPS and TEMPLATE_DIRS settings when they are
+  specified as a plain string instead of a tuple will be removed and raise an
+  exception.
 
-* The ``syncdb`` command will be removed.
+* The ``mimetype`` argument to the ``__init__`` methods of
+  :class:`~django.http.HttpResponse`,
+  :class:`~django.template.response.SimpleTemplateResponse`, and
+  :class:`~django.template.response.TemplateResponse`, will be removed.
+  ``content_type`` should be used instead. This also applies to the
+  :func:`~django.shortcuts.render_to_response` shortcut and
+  the sitemap views, :func:`~django.contrib.sitemaps.views.index` and
+  :func:`~django.contrib.sitemaps.views.sitemap`.
 
-* ``django.db.models.signals.pre_syncdb`` and
-  ``django.db.models.signals.post_syncdb`` will be removed.
+* When :class:`~django.http.HttpResponse` is instantiated with an iterator,
+  or when :attr:`~django.http.HttpResponse.content` is set to an iterator,
+  that iterator will be immediately consumed.
 
-* ``allow_syncdb`` on database routers will no longer automatically become
-  ``allow_migrate``.
+* The ``AUTH_PROFILE_MODULE`` setting, and the ``get_profile()`` method on
+  the User model, will be removed.
 
-* All models will need to be defined inside an installed application or
-  declare an explicit :attr:`~django.db.models.Options.app_label`.
-  Furthermore, it won't be possible to import them before their application
-  is loaded. In particular, it won't be possible to import models inside
-  the root package of their application.
+* The ``cleanup`` management command will be removed. It's replaced by
+  ``clearsessions``.
 
-* If models are organized in a package, Django will no longer look for
-  :ref:`initial SQL data<initial-sql>` in ``myapp/models/sql/``. Move your
-  custom SQL files to ``myapp/sql/``.
+* The ``daily_cleanup.py`` script will be removed.
 
-* The model and form ``IPAddressField`` will be removed.
+* The ``depth`` keyword argument will be removed from
+  :meth:`~django.db.models.query.QuerySet.select_related`.
 
-* ``AppCommand.handle_app()`` will no longer be supported.
+* The undocumented ``get_warnings_state()``/``restore_warnings_state()``
+  functions from :mod:`django.test.utils` and the ``save_warnings_state()``/
+  ``restore_warnings_state()``
+  :ref:`django.test.*TestCase <django-testcase-subclasses>` methods are
+  deprecated. Use the :class:`warnings.catch_warnings` context manager
+  available starting with Python 2.6 instead.
 
-* ``RequestSite`` will be located in ``django.contrib.sites.requests`` and
-  ``get_current_site`` in ``django.contrib.sites.shortcuts``.
+* The undocumented ``check_for_test_cookie`` method in
+  :class:`~django.contrib.auth.forms.AuthenticationForm` will be removed
+  following an accelerated deprecation. Users subclassing this form should
+  remove calls to this method, and instead ensure that their auth related views
+  are CSRF protected, which ensures that cookies are enabled.
 
-* FastCGI support via the ``runfcgi`` management command will be
-  removed. Please deploy your project using WSGI.
+* The version of :func:`django.contrib.auth.views.password_reset_confirm` that
+  supports base36 encoded user IDs
+  (``django.contrib.auth.views.password_reset_confirm_uidb36``) will be
+  removed. If your site has been running Django 1.6 for more than
+  :setting:`PASSWORD_RESET_TIMEOUT_DAYS`, this change will have no effect. If
+  not, then any password reset links generated before you upgrade to Django 1.7
+  won't work after the upgrade.
 
-* ``django.utils.datastructures.SortedDict`` will be removed. Use
-  :class:`collections.OrderedDict` from the Python standard library instead.
+.. _deprecation-removed-in-1.6:
 
-* ``ModelAdmin.declared_fieldsets`` will be removed.
+1.6
+---
 
-* Instances of ``util.py`` in the Django codebase have been renamed to
-  ``utils.py`` in an effort to unify all util and utils references.
-  The modules that provided backwards compatibility will be removed:
+See the :ref:`Django 1.4 release notes<deprecated-features-1.4>` for more
+details on these changes.
 
-  * ``django.contrib.admin.util``
-  * ``django.contrib.gis.db.backends.util``
-  * ``django.db.backends.util``
-  * ``django.forms.util``
+* ``django.contrib.databrowse`` will be removed.
 
-* ``ModelAdmin.get_formsets`` will be removed.
+* ``django.contrib.localflavor`` will be removed following an accelerated
+  deprecation.
 
-* Remove the backward compatible shims introduced to rename the
-  ``BaseMemcachedCache._get_memcache_timeout()`` method to
-  ``get_backend_timeout()``.
+* ``django.contrib.markup`` will be removed following an accelerated
+  deprecation.
 
-* The ``--natural`` and ``-n`` options for :djadmin:`dumpdata` will be removed.
-  Use :djadminopt:`--natural-foreign` instead.
+* The compatibility modules ``django.utils.copycompat`` and
+  ``django.utils.hashcompat`` as well as the functions
+  ``django.utils.itercompat.all`` and ``django.utils.itercompat.any`` will
+  be removed. The Python builtin versions should be used instead.
 
-* The ``use_natural_keys`` argument for ``serializers.serialize()`` will be
-  removed. Use ``use_natural_foreign_keys`` instead.
+* The ``csrf_response_exempt`` and ``csrf_view_exempt`` decorators will
+  be removed. Since 1.4 ``csrf_response_exempt`` has been a no-op (it
+  returns the same function), and ``csrf_view_exempt`` has been a
+  synonym for ``django.views.decorators.csrf.csrf_exempt``, which should
+  be used to replace it.
 
-* ``django.forms.get_declared_fields`` will be removed.
+* The ``django.core.cache.backends.memcached.CacheClass`` backend
+  was split into two in Django 1.3 in order to introduce support for
+  PyLibMC. The historical ``CacheClass`` will be removed in favor of
+  ``django.core.cache.backends.memcached.MemcachedCache``.
 
-* The ability to use a ``SplitDateTimeWidget`` with ``DateTimeField`` will be
+* The UK-prefixed objects of ``django.contrib.localflavor.uk`` will only
+  be accessible through their GB-prefixed names (GB is the correct
+  ISO 3166 code for United Kingdom).
+
+* The ``IGNORABLE_404_STARTS`` and ``IGNORABLE_404_ENDS`` settings have been
+  superseded by :setting:`IGNORABLE_404_URLS` in the 1.4 release. They will be
   removed.
 
-* The ``WSGIRequest.REQUEST`` property will be removed.
+* The :doc:`form wizard </ref/contrib/formtools/form-wizard>` has been
+  refactored to use class-based views with pluggable backends in 1.4.
+  The previous implementation will be removed.
 
-* The class ``django.utils.datastructures.MergeDict`` will be removed.
+* Legacy ways of calling
+  :func:`~django.views.decorators.cache.cache_page` will be removed.
 
-* The ``zh-cn`` and ``zh-tw`` language codes will be removed and have been
-  replaced by the ``zh-hans`` and ``zh-hant`` language code respectively.
+* The backward-compatibility shim to automatically add a debug-false
+  filter to the ``'mail_admins'`` logging handler will be removed. The
+  :setting:`LOGGING` setting should include this filter explicitly if
+  it is desired.
 
-* The internal ``django.utils.functional.memoize`` will be removed.
+* The builtin truncation functions ``django.utils.text.truncate_words()``
+  and ``django.utils.text.truncate_html_words()`` will be removed in
+  favor of the ``django.utils.text.Truncator`` class.
 
-* ``django.core.cache.get_cache`` will be removed. Add suitable entries
-  to :setting:`CACHES` and use :data:`django.core.cache.caches` instead.
+* The :class:`~django.contrib.gis.geoip.GeoIP` class was moved to
+  :mod:`django.contrib.gis.geoip` in 1.4 -- the shortcut in
+  :mod:`django.contrib.gis.utils` will be removed.
 
-* ``django.db.models.loading`` will be removed.
+* ``django.conf.urls.defaults`` will be removed. The functions
+  :func:`~django.conf.urls.include`, :func:`~django.conf.urls.patterns` and
+  :func:`~django.conf.urls.url` plus :data:`~django.conf.urls.handler404`,
+  :data:`~django.conf.urls.handler500`, are now available through
+  :mod:`django.conf.urls` .
 
-* Passing callable arguments to querysets will no longer be possible.
+* The functions ``setup_environ()`` and ``execute_manager()`` will be removed
+  from :mod:`django.core.management`. This also means that the old (pre-1.4)
+  style of :file:`manage.py` file will no longer work.
 
-* ``BaseCommand.requires_model_validation`` will be removed in favor of
-  ``requires_system_checks``. Admin validators will be replaced by admin
-  checks.
+* Setting the ``is_safe`` and ``needs_autoescape`` flags as attributes of
+  template filter functions will no longer be supported.
 
-* ``ModelAdmin.validator`` will be removed in favor of the new ``checks``
-  attribute.
+* The attribute ``HttpRequest.raw_post_data`` was renamed to ``HttpRequest.body``
+  in 1.4. The backward compatibility will be removed --
+  ``HttpRequest.raw_post_data`` will no longer work.
 
-* ``django.db.backends.DatabaseValidation.validate_field`` will be removed in
-  favor of the ``check_field`` method.
+* The value for the ``post_url_continue`` parameter in
+  ``ModelAdmin.response_add()`` will have to be either ``None`` (to redirect
+  to the newly created object's edit page) or a pre-formatted url. String
+  formats, such as the previous default ``'../%s/'``, will not be accepted any
+  more.
 
-2.0
+.. _deprecation-removed-in-1.5:
+
+1.5
 ---
 
-* ``ssi`` and ``url`` template tags will be removed from the ``future`` template
-  tag library (used during the 1.3/1.4 deprecation period).
+See the :ref:`Django 1.3 release notes<deprecated-features-1.3>` for more
+details on these changes.
+
+* Starting Django without a :setting:`SECRET_KEY` will result in an exception
+  rather than a ``DeprecationWarning``. (This is accelerated from the usual
+  deprecation path; see the :doc:`Django 1.4 release notes</releases/1.4>`.)
+
+* The ``mod_python`` request handler will be removed. The ``mod_wsgi``
+  handler should be used instead.
+
+* The ``template`` attribute on ``django.test.client.Response``
+  objects returned by the :ref:`test client <test-client>` will be removed.
+  The :attr:`~django.test.Response.templates` attribute should be
+  used instead.
+
+* The ``django.test.simple.DjangoTestRunner`` will be removed.
+  Instead use a unittest-native class.  The features of the
+  ``django.test.simple.DjangoTestRunner`` (including fail-fast and
+  Ctrl-C test termination) can currently be provided by the unittest-native
+  :class:`~unittest.TextTestRunner`.
+
+* The undocumented function
+  ``django.contrib.formtools.utils.security_hash`` will be removed,
+  instead use ``django.contrib.formtools.utils.form_hmac``
+
+* The function-based generic view modules will be removed in favor of their
+  class-based equivalents, outlined :doc:`here
+  </topics/class-based-views/index>`.
+
+* The ``django.core.servers.basehttp.AdminMediaHandler`` will be
+  removed.  In its place use
+  ``django.contrib.staticfiles.handlers.StaticFilesHandler``.
+
+* The template tags library ``adminmedia`` and the template tag ``{%
+  admin_media_prefix %}`` will be removed in favor of the generic static files
+  handling. (This is faster than the usual deprecation path; see the
+  :doc:`Django 1.4 release notes</releases/1.4>`.)
+
+* The :ttag:`url` and :ttag:`ssi` template tags will be
+  modified so that the first argument to each tag is a template variable, not
+  an implied string. In 1.4, this behavior is provided by a version of the tag
+  in the ``future`` template tag library.
+
+* The ``reset`` and ``sqlreset`` management commands will be removed.
+
+* Authentication backends will need to support an inactive user
+  being passed to all methods dealing with permissions.
+  The ``supports_inactive_user`` attribute will no longer be checked
+  and can be removed from custom backends.
+
+* :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` will raise
+  a :class:`~django.contrib.gis.geos.GEOSException` when called
+  on a geometry with no SRID value.
+
+* ``django.http.CompatCookie`` will be removed in favor of
+  ``django.http.SimpleCookie``.
+
+* ``django.core.context_processors.PermWrapper`` and
+  ``django.core.context_processors.PermLookupDict`` will be removed in
+  favor of the corresponding
+  ``django.contrib.auth.context_processors.PermWrapper`` and
+  ``django.contrib.auth.context_processors.PermLookupDict``, respectively.
+
+* The :setting:`MEDIA_URL` or :setting:`STATIC_URL` settings will be
+  required to end with a trailing slash to ensure there is a consistent
+  way to combine paths in templates.
+
+* ``django.db.models.fields.URLField.verify_exists`` will be removed. The
+  feature was deprecated in 1.3.1 due to intractable security and
+  performance issues and will follow a slightly accelerated deprecation
+  timeframe.
+
+* Translations located under the so-called *project path* will be ignored during
+  the translation building process performed at runtime. The
+  :setting:`LOCALE_PATHS` setting can be used for the same task by including the
+  filesystem path to a ``locale`` directory containing non-app-specific
+  translations in its value.
+
+* The Markup contrib app will no longer support versions of Python-Markdown
+  library earlier than 2.1. An accelerated timeline was used as this was
+  a security related deprecation.
+
+* The ``CACHE_BACKEND`` setting will be removed. The cache backend(s) should be
+  specified in the :setting:`CACHES` setting.
+
+.. _deprecation-removed-in-1.4:
+
+1.4
+---
+
+See the :ref:`Django 1.2 release notes<deprecated-features-1.2>` for more
+details on these changes.
+
+* ``CsrfResponseMiddleware`` and ``CsrfMiddleware`` will be removed.  Use
+  the ``{% csrf_token %}`` template tag inside forms to enable CSRF
+  protection. ``CsrfViewMiddleware`` remains and is enabled by default.
+
+* The old imports for CSRF functionality (``django.contrib.csrf.*``),
+  which moved to core in 1.2, will be removed.
+
+* The ``django.contrib.gis.db.backend`` module will be removed in favor
+  of the specific backends.
+
+* ``SMTPConnection`` will be removed in favor of a generic Email backend API.
+
+* The many to many SQL generation functions on the database backends
+  will be removed.
+
+* The ability to use the ``DATABASE_*`` family of top-level settings to
+  define database connections will be removed.
+
+* The ability to use shorthand notation to specify a database backend
+  (i.e., ``sqlite3`` instead of ``django.db.backends.sqlite3``) will be
+  removed.
+
+* The ``get_db_prep_save``, ``get_db_prep_value`` and
+  ``get_db_prep_lookup`` methods will have to support multiple databases.
+
+* 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()``), will be removed.  The
+  :doc:`messages framework </ref/contrib/messages>` should be used
+  instead. The related ``messages`` variable returned by the
+  auth context processor will also be removed. Note that this
+  means that the admin application will depend on the messages
+  context processor.
+
+* Authentication backends will need to support the ``obj`` parameter for
+  permission checking. The ``supports_object_permissions`` attribute
+  will no longer be checked and can be removed from custom backends.
+
+* Authentication backends will need to support the ``AnonymousUser`` class
+  being passed to all methods dealing with permissions.  The
+  ``supports_anonymous_user`` variable will no longer be checked and can be
+  removed from custom backends.
+
+* 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.
+
+* ``django.utils.translation.get_date_formats()`` and
+  ``django.utils.translation.get_partial_date_formats()``. These functions
+  will be removed; use the locale-aware
+  ``django.utils.formats.get_format()`` to get the appropriate formats.
+
+* In ``django.forms.fields``, the constants: ``DEFAULT_DATE_INPUT_FORMATS``,
+  ``DEFAULT_TIME_INPUT_FORMATS`` and
+  ``DEFAULT_DATETIME_INPUT_FORMATS`` will be removed. Use
+  ``django.utils.formats.get_format()`` to get the appropriate
+  formats.
+
+* The ability to use a function-based test runner will be removed,
+  along with the ``django.test.simple.run_tests()`` test runner.
+
+* The ``views.feed()`` view and ``feeds.Feed`` class in
+  ``django.contrib.syndication`` will be removed. The class-based view
+  ``views.Feed`` should be used instead.
+
+* ``django.core.context_processors.auth``.  This release will
+  remove the old method in favor of the new method in
+  ``django.contrib.auth.context_processors.auth``.
+
+* The ``postgresql`` database backend will be removed, use the
+  ``postgresql_psycopg2`` backend instead.
+
+* The ``no`` language code will be removed and has been replaced by the
+  ``nb`` language code.
+
+* Authentication backends will need to define the boolean attribute
+  ``supports_inactive_user`` until version 1.5 when it will be assumed that
+  all backends will handle inactive users.
+
+* ``django.db.models.fields.XMLField`` will be removed. This was
+  deprecated as part of the 1.3 release. An accelerated deprecation
+  schedule has been used because the field hasn't performed any role
+  beyond that of a simple ``TextField`` since the removal of oldforms.
+  All uses of ``XMLField`` can be replaced with ``TextField``.
+
+* The undocumented ``mixin`` parameter to the ``open()`` method of
+  ``django.core.files.storage.Storage`` (and subclasses) will be removed.
+
+.. _deprecation-removed-in-1.3:
+
+1.3
+---
+
+See the :ref:`Django 1.1 release notes<deprecated-features-1.1>` for more
+details on these changes.
+
+* ``AdminSite.root()``.  This method of hooking up the admin URLs will be
+  removed in favor of including ``admin.site.urls``.
+
+* Authentication backends need to define the boolean attributes
+  ``supports_object_permissions`` and ``supports_anonymous_user`` until
+  version 1.4, at which point it will be assumed that all backends will
+  support these options.

+ 5 - 3
docs/releases/1.4.txt

@@ -9,9 +9,9 @@ Welcome to Django 1.4!
 These release notes cover the `new features`_, as well
 as some `backwards incompatible changes`_ you'll want to be aware of
 when upgrading from Django 1.3 or older versions. We've also dropped some
-features, which are detailed in :doc:`our deprecation plan
-</internals/deprecation>`, and we've `begun the deprecation process for some
-features`_.
+features, which are detailed in :ref:`our deprecation plan
+<deprecation-removed-in-1.4>`, and we've `begun the deprecation process for
+some features`_.
 
 .. _`new features`: `What's new in Django 1.4`_
 .. _`backwards incompatible changes`: `Backwards incompatible changes in 1.4`_
@@ -1175,6 +1175,8 @@ class ``initial`` dictionary. This has been fixed to return a copy of this
 dictionary, so form instances can modify their initial data without messing
 with the class variable.
 
+.. _deprecated-features-1.4:
+
 Features deprecated in 1.4
 ==========================
 

+ 5 - 3
docs/releases/1.5.txt

@@ -9,9 +9,9 @@ Welcome to Django 1.5!
 These release notes cover the `new features`_, as well
 as some `backwards incompatible changes`_ you'll want to be aware of
 when upgrading from Django 1.4 or older versions. We've also dropped some
-features, which are detailed in :doc:`our deprecation plan
-</internals/deprecation>`, and we've `begun the deprecation process for some
-features`_.
+features, which are detailed in :ref:`our deprecation plan
+<deprecation-removed-in-1.5>`, and we've `begun the deprecation process for
+some features`_.
 
 .. _`new features`: `What's new in Django 1.5`_
 .. _`backwards incompatible changes`: `Backwards incompatible changes in 1.5`_
@@ -715,6 +715,8 @@ Miscellaneous
   :meth:`~django.db.models.query.QuerySet.select_related` now raises
   :exc:`~django.core.exceptions.DoesNotExist` instead of returning ``None``.
 
+.. _deprecated-features-1.5:
+
 Features deprecated in 1.5
 ==========================
 

+ 3 - 1
docs/releases/1.6.txt

@@ -27,7 +27,7 @@ Welcome to Django 1.6!
 These release notes cover the `new features`_, as well as some `backwards
 incompatible changes`_ you'll want to be aware of when upgrading from Django
 1.5 or older versions. We've also dropped some features, which are detailed in
-:doc:`our deprecation plan </internals/deprecation>`, and we've `begun the
+:ref:`our deprecation plan <deprecation-removed-in-1.6>`, and we've `begun the
 deprecation process for some features`_.
 
 .. _`new features`: `What's new in Django 1.6`_
@@ -955,6 +955,8 @@ Miscellaneous
   which may result in a ``TypeError`` if you don't update the signature of your
   custom method.
 
+.. _deprecated-features-1.6:
+
 Features deprecated in 1.6
 ==========================
 

+ 3 - 1
docs/releases/1.7.txt

@@ -7,7 +7,7 @@ Welcome to Django 1.7!
 These release notes cover the `new features`_, as well as some `backwards
 incompatible changes`_ you'll want to be aware of when upgrading from Django
 1.6 or older versions. We've also dropped some features, which are detailed in
-:doc:`our deprecation plan </internals/deprecation>`, and we've `begun the
+:ref:`our deprecation plan <deprecation-removed-in-1.7>`, and we've `begun the
 deprecation process for some features`_.
 
 .. _`new features`: `What's new in Django 1.7`_
@@ -959,6 +959,8 @@ Miscellaneous
   to ``False``). If you maintain a custom database backend, you should check
   that method.
 
+.. _deprecated-features-1.7:
+
 Features deprecated in 1.7
 ==========================