diff options
| author | Tim Graham <timograham@gmail.com> | 2015-09-12 16:27:30 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-09-23 19:31:11 -0400 |
| commit | 54848a96dd4a196e81f3d71c61caf84ea8b49f4e (patch) | |
| tree | 0fe3e51fc3f783adc69c46bb0313514f207f71ab /docs | |
| parent | 48e7787db599b0103daf70f0ff4968d90b8540aa (diff) | |
Removed versionadded/changed annotations for 1.8.
Diffstat (limited to 'docs')
74 files changed, 44 insertions, 852 deletions
diff --git a/docs/howto/custom-lookups.txt b/docs/howto/custom-lookups.txt index f398618e39..51ddbbcd2f 100644 --- a/docs/howto/custom-lookups.txt +++ b/docs/howto/custom-lookups.txt @@ -52,10 +52,6 @@ Lookup registration can also be done using a decorator pattern:: class NotEqualLookup(Lookup): # ... -.. versionchanged:: 1.8 - - The ability to use the decorator pattern was added. - We can now use ``foo__ne`` for any field ``foo``. You will need to ensure that this registration happens before you try to create any querysets using it. You could place the implementation in a ``models.py`` file, or register the lookup diff --git a/docs/howto/custom-management-commands.txt b/docs/howto/custom-management-commands.txt index ac89dd0ded..f42680b693 100644 --- a/docs/howto/custom-management-commands.txt +++ b/docs/howto/custom-management-commands.txt @@ -136,11 +136,6 @@ because some commands shipped with Django perform several tasks (for example, user-facing content rendering and database population) that require a project-neutral string language. -.. versionchanged:: 1.8 - - In previous versions, Django forced the "en-us" locale instead of - deactivating translations. - If, for some reason, your custom management command needs to use a fixed locale, you should manually activate and deactivate it in your :meth:`~BaseCommand.handle` method using the functions provided by the I18N @@ -226,8 +221,6 @@ All attributes can be set in your derived class and can be used in .. attribute:: BaseCommand.missing_args_message - .. versionadded:: 1.8 - If your command defines mandatory positional arguments, you can customize the message error returned in the case of missing arguments. The default is output by :py:mod:`argparse` ("too few arguments"). @@ -281,8 +274,6 @@ the :meth:`~BaseCommand.handle` method must be implemented. .. method:: BaseCommand.add_arguments(parser) - .. versionadded:: 1.8 - Entry point to add parser arguments to handle command line arguments passed to the command. Custom commands should override this method to add both positional and optional arguments accepted by the command. Calling diff --git a/docs/howto/custom-template-tags.txt b/docs/howto/custom-template-tags.txt index f44715a14a..9294927cf2 100644 --- a/docs/howto/custom-template-tags.txt +++ b/docs/howto/custom-template-tags.txt @@ -340,8 +340,6 @@ Template filter code falls into one of two situations: .. warning:: Avoiding XSS vulnerabilities when reusing built-in filters - .. versionchanged:: 1.8 - Django's built-in filters have ``autoescape=True`` by default in order to get the proper autoescaping behavior and avoid a cross-site script vulnerability. @@ -849,15 +847,6 @@ template yourself. For example:: t = context.template.engine.get_template('small_fragment.html') return t.render(Context({'var': obj}, autoescape=context.autoescape)) -.. versionchanged:: 1.8 - - The ``template`` attribute of ``Context`` objects was added in Django 1.8. - :meth:`context.template.engine.get_template - <django.template.Engine.get_template>` must be used instead of - :func:`django.template.loader.get_template` because the latter now returns - a wrapper whose ``render`` method doesn't accept a - :class:`~django.template.Context`. - If we had neglected to pass in the current ``context.autoescape`` value to our new ``Context`` in this example, the results would have *always* been automatically escaped, which may not be the desired behavior if the template diff --git a/docs/howto/writing-migrations.txt b/docs/howto/writing-migrations.txt index 5527302fa8..842485adfd 100644 --- a/docs/howto/writing-migrations.txt +++ b/docs/howto/writing-migrations.txt @@ -36,8 +36,6 @@ attribute:: migrations.RunPython(forwards), ] -.. versionadded:: 1.8 - You can also provide hints that will be passed to the :meth:`allow_migrate()` method of database routers as ``**hints``: diff --git a/docs/internals/contributing/writing-code/submitting-patches.txt b/docs/internals/contributing/writing-code/submitting-patches.txt index bc7503518f..e845ab3d06 100644 --- a/docs/internals/contributing/writing-code/submitting-patches.txt +++ b/docs/internals/contributing/writing-code/submitting-patches.txt @@ -207,12 +207,6 @@ level: class MyDeprecatedTests(unittest.TestCase): ... -.. versionchanged:: 1.8 - - Previous versions of Django had some ``Ignore*DeprecationWarningsMixin`` - classes to prevent warnings from appearing. These have been replaced by the - ``ignore_warnings`` decorator. - You can also add a test for the deprecation warning. You'll have to disable the "warning as error" behavior in your test by doing:: diff --git a/docs/internals/contributing/writing-code/unit-tests.txt b/docs/internals/contributing/writing-code/unit-tests.txt index 4acaa78c51..cfad2f1db6 100644 --- a/docs/internals/contributing/writing-code/unit-tests.txt +++ b/docs/internals/contributing/writing-code/unit-tests.txt @@ -282,10 +282,6 @@ combine this with ``--verbosity=2``, all SQL queries will be output:: $ ./runtests.py basic --debug-sql -.. versionadded:: 1.8 - - The ``--reverse`` and ``--debug-sql`` options were added. - By default tests are run in parallel with one process per core. You can adjust this behavior with the ``--parallel`` option:: diff --git a/docs/ref/class-based-views/mixins-editing.txt b/docs/ref/class-based-views/mixins-editing.txt index 832f42ccd4..29e1f05a8e 100644 --- a/docs/ref/class-based-views/mixins-editing.txt +++ b/docs/ref/class-based-views/mixins-editing.txt @@ -114,11 +114,6 @@ ModelFormMixin :exc:`~django.core.exceptions.ImproperlyConfigured` exception will be raised. - .. versionchanged:: 1.8 - - Previously if both ``fields`` and ``form_class`` were specified, - ``fields`` was silently ignored. - **Mixins** * :class:`django.views.generic.edit.FormMixin` @@ -142,11 +137,6 @@ ModelFormMixin result in an :exc:`~django.core.exceptions.ImproperlyConfigured` exception. - .. versionchanged:: 1.8 - - Previously, omitting this attribute was allowed and resulted in - a form with all fields of the model. - .. attribute:: success_url The URL to redirect to when the form is successfully processed. diff --git a/docs/ref/class-based-views/mixins-multiple-object.txt b/docs/ref/class-based-views/mixins-multiple-object.txt index 8d64604841..6c4cdadedf 100644 --- a/docs/ref/class-based-views/mixins-multiple-object.txt +++ b/docs/ref/class-based-views/mixins-multiple-object.txt @@ -74,8 +74,6 @@ MultipleObjectMixin .. attribute:: ordering - .. versionadded:: 1.8 - A string or list of strings specifying the ordering to apply to the ``queryset``. Valid values are the same as those for :meth:`~django.db.models.query.QuerySet.order_by`. @@ -120,8 +118,6 @@ MultipleObjectMixin .. method:: get_ordering() - .. versionadded:: 1.8 - Returns a string (or iterable of strings) that defines the ordering that will be applied to the ``queryset``. diff --git a/docs/ref/class-based-views/mixins-simple.txt b/docs/ref/class-based-views/mixins-simple.txt index ba18a1325b..9550c22ed4 100644 --- a/docs/ref/class-based-views/mixins-simple.txt +++ b/docs/ref/class-based-views/mixins-simple.txt @@ -51,8 +51,6 @@ TemplateResponseMixin .. attribute:: template_engine - .. versionadded:: 1.8 - The :setting:`NAME <TEMPLATES-NAME>` of a template engine to use for loading the template. ``template_engine`` is passed as the ``using`` keyword argument to ``response_class``. Default is ``None``, which @@ -61,25 +59,11 @@ TemplateResponseMixin .. attribute:: response_class The response class to be returned by ``render_to_response`` method. - Default is - :class:`TemplateResponse <django.template.response.TemplateResponse>`. - The template and context of ``TemplateResponse`` instances can be - altered later (e.g. in + Default is :class:`TemplateResponse + <django.template.response.TemplateResponse>`. The template and context + of ``TemplateResponse`` instances can be altered later (e.g. in :ref:`template response middleware <template-response-middleware>`). - .. versionchanged:: 1.8 - - In older versions of Django, ``TemplateResponse`` used - :class:`~django.template.RequestContext` in such a way that values - from template context processors would override template variables - defined in your views. For example, if you subclassed - :class:`DetailView <django.views.generic.detail.DetailView>` and - set ``context_object_name`` to ``user``, the - ``django.contrib.auth.context_processors.auth`` context processor - would overwrite your variable with the current user. Now, for - consistency with the ``render()`` shortcut, values in the context - provided by the class override values from context processors. - If you need custom template loading or custom context object instantiation, create a ``TemplateResponse`` subclass and assign it to ``response_class``. diff --git a/docs/ref/class-based-views/mixins-single-object.txt b/docs/ref/class-based-views/mixins-single-object.txt index 8296064c15..e7370b3ba8 100644 --- a/docs/ref/class-based-views/mixins-single-object.txt +++ b/docs/ref/class-based-views/mixins-single-object.txt @@ -53,8 +53,6 @@ SingleObjectMixin .. attribute:: query_pk_and_slug - .. versionadded:: 1.8 - If ``True``, causes :meth:`get_object()` to perform its lookup using both the primary key and the slug. Defaults to ``False``. @@ -81,10 +79,8 @@ SingleObjectMixin :attr:`slug_url_kwarg` argument, and performs a slug lookup using the :attr:`slug_field`. - .. versionchanged:: 1.8 - - When :attr:`query_pk_and_slug` is ``True``, ``get_object()`` will - perform its lookup using both the primary key and the slug. + When :attr:`query_pk_and_slug` is ``True``, ``get_object()`` will + perform its lookup using both the primary key and the slug. .. method:: get_queryset() diff --git a/docs/ref/contrib/admin/index.txt b/docs/ref/contrib/admin/index.txt index 321c6d83ad..93af6e161b 100644 --- a/docs/ref/contrib/admin/index.txt +++ b/docs/ref/contrib/admin/index.txt @@ -915,8 +915,6 @@ subclass:: ('is_staff', admin.BooleanFieldListFilter), ) - .. versionadded:: 1.8 - You can now limit the choices of a related model to the objects involved in that relation using ``RelatedOnlyFieldListFilter``:: @@ -1200,8 +1198,6 @@ subclass:: .. attribute:: ModelAdmin.show_full_result_count - .. versionadded:: 1.8 - Set ``show_full_result_count`` to control whether the full count of objects should be displayed on a filtered admin page (e.g. ``99 results (103 total)``). If this option is set to ``False``, a text like ``99 results (Show all)`` @@ -1711,8 +1707,6 @@ templates used by the :class:`ModelAdmin` views: .. method:: ModelAdmin.has_module_permission(request) - .. versionadded:: 1.8 - Should return ``True`` if displaying the module on the admin index page and accessing the module's index page is permitted, ``False`` otherwise. Uses :meth:`User.has_module_perms() @@ -1788,10 +1782,6 @@ templates used by the :class:`ModelAdmin` views: ``obj_id`` is the serialized identifier used to retrieve the object to be deleted. - .. versionadded:: 1.8 - - The ``obj_id`` parameter was added. - .. method:: ModelAdmin.get_changeform_initial_data(request) A hook for the initial data on admin change forms. By default, fields are @@ -1895,10 +1885,6 @@ To avoid conflicts with user-supplied scripts or libraries, Django's jQuery in your own admin JavaScript without including a second copy, you can use the ``django.jQuery`` object on changelist and add/edit views. -.. versionchanged:: 1.8 - - The embedded jQuery has been upgraded from 1.9.1 to 1.11.2. - .. versionchanged:: 1.9 The embedded jQuery has been upgraded from 1.11.2 to 2.1.4. This drops @@ -2119,8 +2105,6 @@ The ``InlineModelAdmin`` class adds: .. attribute:: InlineModelAdmin.show_change_link - .. versionadded:: 1.8 - Specifies whether or not inline objects that can be changed in the admin have a link to the change form. Defaults to ``False``. @@ -2519,8 +2503,6 @@ Templates can override or extend base admin templates as described in .. attribute:: AdminSite.site_url - .. versionadded:: 1.8 - The URL for the "View site" link at the top of each admin page. By default, ``site_url`` is ``/``. Set it to ``None`` to remove the link. @@ -2603,10 +2585,6 @@ Templates can override or extend base admin templates as described in * ``admin_url``: admin changelist URL for the model * ``add_url``: admin URL to add a new model instance - .. versionchanged:: 1.8 - - The ``request`` argument and the ``has_permission`` variable were added. - .. versionchanged:: 1.9 The ``available_apps`` variable was added. @@ -2732,12 +2710,6 @@ a pattern for your new view. ``AdminSite`` or ``self.admin_site.name`` if your view is on a ``ModelAdmin``. - .. versionchanged:: 1.8 - - In previous versions of Django, you had to provide the ``current_app`` - argument to :class:`~django.template.RequestContext` or - :class:`~django.template.Context` when rendering the template. - .. _auth_password_reset: Adding a password-reset feature diff --git a/docs/ref/contrib/auth.txt b/docs/ref/contrib/auth.txt index bf50e73d99..217bd432b5 100644 --- a/docs/ref/contrib/auth.txt +++ b/docs/ref/contrib/auth.txt @@ -83,11 +83,6 @@ Fields A datetime of the user's last login. - .. versionchanged:: 1.8 - - This field will be ``null`` if the user has never logged in. - Previously it was set to the current date/time by default. - .. attribute:: date_joined A datetime designating when the account was created. Is set to the @@ -285,11 +280,6 @@ Anonymous users :meth:`~django.db.models.Model.save` and :meth:`~django.db.models.Model.delete()` raise :exc:`NotImplementedError`. - .. versionadded:: 1.8 - - ``AnonymousUser.get_username()`` has been added to - better mirror :class:`django.contrib.auth.models.User`. - In practice, you probably won't need to use :class:`~django.contrib.auth.models.AnonymousUser` objects on your own, but they're used by Web requests, as explained in the next section. @@ -311,10 +301,6 @@ fields: Required. 255 characters or fewer. Example: ``'Can vote'``. - .. versionchanged:: 1.8 - - The ``max_length`` increased from 50 to 255 characters. - .. attribute:: content_type Required. A reference to the ``django_content_type`` database table, @@ -460,8 +446,6 @@ The following backends are available in :mod:`django.contrib.auth.backends`: .. method:: get_user_permissions(user_obj, obj=None) - .. versionadded:: 1.8 - Returns the set of permission strings the ``user_obj`` has from their own user permissions. Returns an empty set if :meth:`~django.contrib.auth.models.AbstractBaseUser.is_anonymous` or diff --git a/docs/ref/contrib/flatpages.txt b/docs/ref/contrib/flatpages.txt index 0777a579f9..3326a93ea8 100644 --- a/docs/ref/contrib/flatpages.txt +++ b/docs/ref/contrib/flatpages.txt @@ -345,11 +345,6 @@ Integrating with :mod:`django.contrib.sitemaps` :attr:`~django.contrib.sitemaps.Sitemap.changefreq` or :attr:`~django.contrib.sitemaps.Sitemap.priority`. - .. versionchanged:: 1.8 - - This class is available from ``django.contrib.sitemaps.FlatPageSitemap`` - in older version of Django. - Example ------- diff --git a/docs/ref/contrib/gis/gdal.txt b/docs/ref/contrib/gis/gdal.txt index e04c69c8b4..3aea16ad36 100644 --- a/docs/ref/contrib/gis/gdal.txt +++ b/docs/ref/contrib/gis/gdal.txt @@ -1090,8 +1090,6 @@ the same coordinate transformation repeatedly on different geometries:: Raster Data Objects =================== -.. versionadded:: 1.8 - ``GDALRaster`` ---------------- diff --git a/docs/ref/contrib/gis/install/postgis.txt b/docs/ref/contrib/gis/install/postgis.txt index 8e01793350..7e724938ba 100644 --- a/docs/ref/contrib/gis/install/postgis.txt +++ b/docs/ref/contrib/gis/install/postgis.txt @@ -64,7 +64,8 @@ spatial functionality:: > CREATE EXTENSION postgis; The database user must be a superuser in order to run -``CREATE EXTENSION postgis;``. +``CREATE EXTENSION postgis;``. The command is run during the :djadmin:`migrate` +process. GeoDjango does not currently leverage any `PostGIS topology functionality`__. If you plan to use those features at some point, you can also install the @@ -73,12 +74,6 @@ postgis_topology;``. __ http://postgis.net/docs/Topology.html -.. versionchanged:: 1.8 - - The ``CREATE EXTENSION postgis`` command is now automatically run during - the :djadmin:`migrate` process. You can still create it manually if you - wish. - Managing the database --------------------- diff --git a/docs/ref/contrib/gis/install/spatialite.txt b/docs/ref/contrib/gis/install/spatialite.txt index 01a9a266bc..4ae9965715 100644 --- a/docs/ref/contrib/gis/install/spatialite.txt +++ b/docs/ref/contrib/gis/install/spatialite.txt @@ -160,8 +160,3 @@ Creating a spatial database for SpatiaLite When running ``manage.py migrate`` with a SQLite or SpatiaLite database, the database file will be automatically created if it doesn't exist. Django will also ensure that the spatial metadata are initialized in the database. - -.. versionchanged:: 1.8 - - Prior to Django 1.8, you had to initialize spatial metadata tables yourself - by manually running the "SELECT InitSpatialMetaData();" query. diff --git a/docs/ref/contrib/gis/serializers.txt b/docs/ref/contrib/gis/serializers.txt index 59266940e3..5226a9b9e8 100644 --- a/docs/ref/contrib/gis/serializers.txt +++ b/docs/ref/contrib/gis/serializers.txt @@ -2,8 +2,6 @@ GeoJSON Serializer ================== -.. versionadded:: 1.8 - .. module:: django.contrib.gis.serializers.geojson :synopsis: Serialization of GeoDjango models in the GeoJSON format. diff --git a/docs/ref/contrib/postgres/index.txt b/docs/ref/contrib/postgres/index.txt index a1536680c7..244fe12399 100644 --- a/docs/ref/contrib/postgres/index.txt +++ b/docs/ref/contrib/postgres/index.txt @@ -4,8 +4,6 @@ .. module:: django.contrib.postgres :synopsis: PostgreSQL-specific fields and features -.. versionadded:: 1.8 - PostgreSQL has a number of features which are not shared by the other databases Django supports. This optional module contains model fields and form fields for a number of PostgreSQL specific data types. diff --git a/docs/ref/contrib/sitemaps.txt b/docs/ref/contrib/sitemaps.txt index 004dffc76a..a496522d56 100644 --- a/docs/ref/contrib/sitemaps.txt +++ b/docs/ref/contrib/sitemaps.txt @@ -243,8 +243,6 @@ Sitemap class reference .. attribute:: Sitemap.i18n - .. versionadded:: 1.8 - **Optional.** A boolean attribute that defines if the URLs of this sitemap should diff --git a/docs/ref/contrib/sites.txt b/docs/ref/contrib/sites.txt index defa808207..295bd868a7 100644 --- a/docs/ref/contrib/sites.txt +++ b/docs/ref/contrib/sites.txt @@ -509,10 +509,6 @@ Finally, to avoid repetitive fallback code, the framework provides a :class:`~django.contrib.sites.requests.RequestSite` which will always use the unmodified host. - .. versionchanged:: 1.8 - - Looking up the current site based on ``request.get_host()`` was added. - .. versionchanged:: 1.9 Retrying the lookup with the port stripped was added. diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt index 2d866c5ae0..dec59915dc 100644 --- a/docs/ref/databases.txt +++ b/docs/ref/databases.txt @@ -544,15 +544,6 @@ executing a command like:: or using a :class:`~django.db.migrations.operations.RunSQL` operation in a :ref:`data migration <data-migrations>`. -.. versionchanged:: 1.8 - - Previously, Django truncated fractional seconds from ``datetime`` and - ``time`` values when using the MySQL backend. Now it lets the database - decide whether it should drop that part of the value or not. By default, new - ``DateTimeField`` or ``TimeField`` columns are now created with fractional - seconds support on MySQL 5.6.4 or later with either mysqlclient or - MySQLdb 1.2.5 or later. - ``TIMESTAMP`` columns ~~~~~~~~~~~~~~~~~~~~~ @@ -756,12 +747,6 @@ Some test suites also create views; to run these, the user also needs the CREATE VIEW WITH ADMIN OPTION privilege. In particular, this is needed for Django's own test suite. -.. versionchanged:: 1.8 - - Prior to Django 1.8, the test user was granted the CONNECT and RESOURCE - roles, so the extra privileges required for running the test suite were - different. - All of these privileges are included in the DBA role, which is appropriate for use on a private developer's database. diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 41df95b37a..a48a7043fd 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -132,8 +132,6 @@ List all available tags. .. django-admin-option:: --deploy -.. versionadded:: 1.8 - The ``--deploy`` option activates some additional checks that are only relevant in a deployment setting. @@ -172,10 +170,6 @@ into compiled files. ``compilemessages`` now matches the operation of :djadmin:`makemessages`, scanning the project tree for ``.po`` files to compile. -.. versionchanged:: 1.8 - - Added ``--exclude`` and ``--use-fuzzy`` options. - Example usage:: django-admin compilemessages --locale=pt_BR @@ -312,8 +306,6 @@ one model. .. django-admin-option:: --output -.. versionadded:: 1.8 - By default ``dumpdata`` will output all the serialized data to standard output. This option allows you to specify the file to which the data is to be written. When this option is set and the verbosity is greater than 0 (the default), a @@ -418,10 +410,6 @@ models that may have been removed since the fixture was originally generated. The :djadminopt:`--app` option can be used to specify a single app to look for fixtures in rather than looking through all apps. -.. versionchanged:: 1.8 - - ``--ignorenonexistent`` also ignores non-existent models. - What's a "fixture"? ~~~~~~~~~~~~~~~~~~~ @@ -587,8 +575,6 @@ Separate multiple extensions with commas or use -e or --extension multiple times Use the :djadminopt:`--locale` option (or its shorter version ``-l``) to specify the locale(s) to process. -.. versionadded:: 1.8 - Use the :djadminopt:`--exclude` option (or its shorter version ``-x``) to specify the locale(s) to exclude from processing. If not provided, no locales are excluded. @@ -698,15 +684,11 @@ The ``--merge`` option enables fixing of migration conflicts. .. django-admin-option:: --name, -n -.. versionadded:: 1.8 - The ``--name`` option allows you to give the migration(s) a custom name instead of a generated one. .. django-admin-option:: --exit, -e -.. versionadded:: 1.8 - The ``--exit`` option will cause ``makemigrations`` to exit with error code 1 when no migrations are created (or would have been created, if combined with ``--dry-run``). @@ -749,8 +731,6 @@ run correctly. .. django-admin-option:: --fake-initial -.. versionadded:: 1.8 - The ``--fake-initial`` option can be used to allow Django to skip an app's initial migration if all database tables with the names of all models created by all :class:`~django.db.migrations.operations.CreateModel` operations in that @@ -970,8 +950,6 @@ showmigrations [<app_label> [<app_label>]] .. django-admin:: showmigrations -.. versionadded:: 1.8 - Shows all migrations in a project. .. django-admin-option:: --list, -l @@ -1238,8 +1216,6 @@ expected to run from. The default value is ``localhost:8081-8179``. .. django-admin-option:: --keepdb -.. versionadded:: 1.8 - The ``--keepdb`` option can be used to preserve the test database between test runs. This has the advantage of skipping both the create and destroy actions which can greatly decrease the time to run tests, especially those in a large @@ -1249,8 +1225,6 @@ be applied to the test database before running the test suite. .. django-admin-option:: --reverse -.. versionadded:: 1.8 - The ``--reverse`` option can be used to sort test cases in the opposite order. This may help in debugging the side effects of tests that aren't properly isolated. :ref:`Grouping by test class <order-of-tests>` is preserved when using @@ -1258,8 +1232,6 @@ this option. .. django-admin-option:: --debug-sql -.. versionadded:: 1.8 - The ``--debug-sql`` option can be used to enable :ref:`SQL logging <django-db-logger>` for failing tests. If :djadminopt:`--verbosity` is ``2``, then queries in passing tests are also output. @@ -1428,8 +1400,6 @@ it when running interactively. Use the ``--database`` option to specify the database into which the superuser object will be saved. -.. versionadded:: 1.8 - You can subclass the management command and override ``get_input_data()`` if you want to customize data input and validation. Consult the source code for details on the existing implementation and the method's parameters. For example, @@ -1767,13 +1737,6 @@ Named arguments can be passed by using either one of the following syntaxes:: # `use_natural_foreign_keys` is the option destination variable management.call_command('dumpdata', use_natural_foreign_keys=True) -.. versionchanged:: 1.8 - - The first syntax is now supported thanks to management commands using the - :py:mod:`argparse` module. For the second syntax, Django previously passed - the option name as-is to the command, now it is always using the ``dest`` - variable name (which may or may not be the same as the option name). - Command options which take multiple options are passed a list:: management.call_command('dumpdata', exclude=['contenttypes', 'auth']) diff --git a/docs/ref/exceptions.txt b/docs/ref/exceptions.txt index 46a0c81c22..f847019c52 100644 --- a/docs/ref/exceptions.txt +++ b/docs/ref/exceptions.txt @@ -33,11 +33,6 @@ Django core exception classes are defined in ``django.core.exceptions``. ``_meta.get_field()`` method when the requested field does not exist on the model or on the model's parents. - .. versionchanged:: 1.8 - - This exception was previously defined only in - ``django.db.models.fields`` and wasn't part of the public API. - ``MultipleObjectsReturned`` --------------------------- @@ -250,8 +245,6 @@ Exceptions provided by the ``django.test`` package. .. exception:: client.RedirectCycleError - .. versionadded:: 1.8 - :exc:`~client.RedirectCycleError` is raised when the test client detects a loop or an overly long chain of redirects. diff --git a/docs/ref/files/file.txt b/docs/ref/files/file.txt index 14efb83fe6..d6824af18c 100644 --- a/docs/ref/files/file.txt +++ b/docs/ref/files/file.txt @@ -53,15 +53,6 @@ The ``File`` Class Iterate over the file yielding one line at a time. - .. versionchanged:: 1.8 - - ``File`` now uses `universal newlines`_. The following are - recognized as ending a line: the Unix end-of-line convention - ``'\n'``, the Windows convention ``'\r\n'``, and the old Macintosh - convention ``'\r'``. - - .. _universal newlines: https://www.python.org/dev/peps/pep-0278 - .. method:: chunks(chunk_size=None) Iterate over the file yielding "chunks" of a given size. ``chunk_size`` diff --git a/docs/ref/files/uploads.txt b/docs/ref/files/uploads.txt index 8bbdb161c3..3304363b90 100644 --- a/docs/ref/files/uploads.txt +++ b/docs/ref/files/uploads.txt @@ -86,10 +86,6 @@ Here are some useful attributes of ``UploadedFile``: .. _universal newlines: https://www.python.org/dev/peps/pep-0278 - .. versionchanged:: 1.8 - - Previously lines were only split on the Unix end-of-line ``'\n'``. - Subclasses of ``UploadedFile`` include: .. class:: TemporaryUploadedFile diff --git a/docs/ref/forms/api.txt b/docs/ref/forms/api.txt index a8d2fa77ff..c36f19ca2b 100644 --- a/docs/ref/forms/api.txt +++ b/docs/ref/forms/api.txt @@ -185,8 +185,6 @@ Note that ``Form.add_error()`` automatically removes the relevant field from .. method:: Form.has_error(field, code=None) -.. versionadded:: 1.8 - This method returns a boolean designating whether a field has an error with a specific error ``code``. If ``code`` is ``None``, it will return ``True`` if the field contains any errors at all. @@ -570,11 +568,6 @@ classes, as needed. The HTML will look something like:: >>> f['subject'].label_tag(attrs={'class': 'foo'}) <label for="id_subject" class="foo required">Subject:</label> -.. versionchanged:: 1.8 - - The ``required_css_class`` will also be added to the ``<label>`` tag as - seen above. - .. _ref-forms-api-configuring-label: Configuring form elements' HTML ``id`` attributes and ``<label>`` tags @@ -693,8 +686,6 @@ Note that the label suffix is added only if the last character of the label isn't a punctuation character (in English, those are ``.``, ``!``, ``?`` or ``:``). -.. versionadded:: 1.8 - Fields can also define their own :attr:`~django.forms.Field.label_suffix`. This will take precedence over :attr:`Form.label_suffix <django.forms.Form.label_suffix>`. The suffix can also be overridden at runtime @@ -990,10 +981,6 @@ Methods of ``BoundField`` fields. If you need to do this in a template, you could write a custom filter to allow passing parameters to ``label_tag``. - .. versionchanged:: 1.8 - - The label includes :attr:`~Form.required_css_class` if applicable. - .. method:: BoundField.value() Use this method to render the raw value of this field as it would be rendered diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt index 72ce98d345..dcb506a67a 100644 --- a/docs/ref/forms/fields.txt +++ b/docs/ref/forms/fields.txt @@ -124,8 +124,6 @@ We've specified ``auto_id=False`` to simplify the output:: .. attribute:: Field.label_suffix -.. versionadded:: 1.8 - The ``label_suffix`` argument lets you override the form's :attr:`~django.forms.Form.label_suffix` on a per-field basis:: @@ -319,10 +317,6 @@ Checking if the field data has changed .. method:: Field.has_changed() -.. versionchanged:: 1.8 - - This method was renamed from ``_has_changed()``. - The ``has_changed()`` method is used to determine if the field value has changed from the initial value. Returns ``True`` or ``False``. @@ -412,10 +406,6 @@ For each field, we describe the default widget used if you don't specify choices <field-choices>` for more details. If the argument is a callable, it is evaluated each time the field's form is initialized. - .. versionchanged:: 1.8 - - The ability to pass a callable to ``choices`` was added. - ``TypedChoiceField`` ~~~~~~~~~~~~~~~~~~~~ @@ -561,8 +551,6 @@ For each field, we describe the default widget used if you don't specify ``DurationField`` ~~~~~~~~~~~~~~~~~ -.. versionadded:: 1.8 - .. class:: DurationField(**kwargs) * Default widget: :class:`TextInput` @@ -708,11 +696,6 @@ For each field, we describe the default widget used if you don't specify ``UploadedFile.content_type`` will be updated with the image's content type if Pillow can determine it, otherwise it will be set to ``None``. - .. versionchanged:: 1.8 - - The ``image`` and ``content_type`` attributes described in the last - paragraph were added. - .. _Pillow: http://pillow.readthedocs.org/en/latest/ .. _Image: https://pillow.readthedocs.org/en/latest/reference/Image.html @@ -922,8 +905,6 @@ For each field, we describe the default widget used if you don't specify ``UUIDField`` ~~~~~~~~~~~~~ -.. versionadded:: 1.8 - .. class:: UUIDField(**kwargs) * Default widget: :class:`TextInput` diff --git a/docs/ref/forms/models.txt b/docs/ref/forms/models.txt index bdf6ba1d89..18ada3c776 100644 --- a/docs/ref/forms/models.txt +++ b/docs/ref/forms/models.txt @@ -46,11 +46,6 @@ Model Form API reference. For introductory material about model forms, see the information. Omitting any definition of the fields to use will result in an :exc:`~django.core.exceptions.ImproperlyConfigured` exception. - .. versionchanged:: 1.8 - - Previously, omitting the list of fields was allowed and resulted in - a form with all fields of the model. - .. versionadded:: 1.9 The ``field_classes`` keyword argument was added. diff --git a/docs/ref/forms/widgets.txt b/docs/ref/forms/widgets.txt index 5e51ec10b1..092173cc7a 100644 --- a/docs/ref/forms/widgets.txt +++ b/docs/ref/forms/widgets.txt @@ -206,18 +206,16 @@ foundation for custom widgets. >>> name.render('name', 'A name') '<input title="Your name" type="text" name="name" value="A name" size="10" />' - .. versionchanged:: 1.8 + If you assign a value of ``True`` or ``False`` to an attribute, + it will be rendered as an HTML5 boolean attribute:: - If you assign a value of ``True`` or ``False`` to an attribute, - it will be rendered as an HTML5 boolean attribute:: - - >>> name = forms.TextInput(attrs={'required': True}) - >>> name.render('name', 'A name') - '<input name="name" type="text" value="A name" required />' - >>> - >>> name = forms.TextInput(attrs={'required': False}) - >>> name.render('name', 'A name') - '<input name="name" type="text" value="A name" />' + >>> name = forms.TextInput(attrs={'required': True}) + >>> name.render('name', 'A name') + '<input name="name" type="text" value="A name" required />' + >>> + >>> name = forms.TextInput(attrs={'required': False}) + >>> name.render('name', 'A name') + '<input name="name" type="text" value="A name" />' .. attribute:: Widget.supports_microseconds @@ -809,8 +807,6 @@ Composite widgets .. attribute:: SelectDateWidget.empty_label - .. versionadded:: 1.8 - If the :class:`~django.forms.DateField` is not required, :class:`SelectDateWidget` will have an empty choice at the top of the list (which is ``---`` by default). You can change the text of this diff --git a/docs/ref/middleware.txt b/docs/ref/middleware.txt index b91aa03f22..b295c5232f 100644 --- a/docs/ref/middleware.txt +++ b/docs/ref/middleware.txt @@ -68,8 +68,6 @@ Adds a few conveniences for perfectionists: .. attribute:: CommonMiddleware.response_redirect_class -.. versionadded:: 1.8 - Defaults to :class:`~django.http.HttpResponsePermanentRedirect`. Subclass ``CommonMiddleware`` and override the attribute to customize the redirects issued by the middleware. @@ -180,8 +178,6 @@ Security middleware .. class:: SecurityMiddleware -.. versionadded:: 1.8 - The ``django.middleware.security.SecurityMiddleware`` provides several security enhancements to the request/response cycle. Each one can be independently enabled or disabled with a setting. diff --git a/docs/ref/migration-operations.txt b/docs/ref/migration-operations.txt index e80630c768..ce0c2da272 100644 --- a/docs/ref/migration-operations.txt +++ b/docs/ref/migration-operations.txt @@ -60,10 +60,6 @@ inheriting from the standard ``models.Model``. The first manager in the list will be the default manager for this model during migrations. -.. versionchanged:: 1.8 - - The ``managers`` argument was added. - DeleteModel ----------- @@ -132,8 +128,6 @@ should be a dictionary mapping option names to values. AlterModelManagers ------------------ -.. versionadded:: 1.8 - .. class:: AlterModelManagers(name, managers) Alters the managers that are available during migrations. @@ -244,17 +238,8 @@ The optional ``hints`` argument will be passed as ``**hints`` to the routing decisions. See :ref:`topics-db-multi-db-hints` for more details on database hints. -.. versionchanged:: 1.8 - - The ability to pass parameters to the ``sql`` and ``reverse_sql`` queries - was added. - - The ``hints`` argument was added. - .. attribute:: RunSQL.noop - .. versionadded:: 1.8 - Pass the ``RunSQL.noop`` attribute to ``sql`` or ``reverse_sql`` when you want the operation not to do anything in the given direction. This is especially useful in making the operation reversible. @@ -282,10 +267,6 @@ The optional ``hints`` argument will be passed as ``**hints`` to the routing decision. See :ref:`topics-db-multi-db-hints` for more details on database hints. -.. versionadded:: 1.8 - - The ``hints`` argument was added. - You are advised to write the code as a separate function above the ``Migration`` class in the migration file, and just pass it to ``RunPython``. Here's an example of using ``RunPython`` to create some initial objects on a ``Country`` @@ -370,8 +351,6 @@ attribute. .. staticmethod:: RunPython.noop - .. versionadded:: 1.8 - Pass the ``RunPython.noop`` method to ``code`` or ``reverse_code`` when you want the operation not to do anything in the given direction. This is especially useful in making the operation reversible. diff --git a/docs/ref/models/conditional-expressions.txt b/docs/ref/models/conditional-expressions.txt index b62f8a5c35..85fc56e553 100644 --- a/docs/ref/models/conditional-expressions.txt +++ b/docs/ref/models/conditional-expressions.txt @@ -4,8 +4,6 @@ Conditional Expressions .. currentmodule:: django.db.models.expressions -.. versionadded:: 1.8 - Conditional expressions let you use :keyword:`if` ... :keyword:`elif` ... :keyword:`else` logic within filters, annotations, aggregations, and updates. A conditional expression evaluates a series of conditions for each row of a diff --git a/docs/ref/models/database-functions.txt b/docs/ref/models/database-functions.txt index dd0bd59379..9c9f2641b9 100644 --- a/docs/ref/models/database-functions.txt +++ b/docs/ref/models/database-functions.txt @@ -5,8 +5,6 @@ Database Functions .. module:: django.db.models.functions :synopsis: Database Functions -.. versionadded:: 1.8 - The classes documented below provide a way for users to use functions provided by the underlying database as annotations, aggregations, or filters in Django. Functions are also :doc:`expressions <expressions>`, so they can be used and diff --git a/docs/ref/models/expressions.txt b/docs/ref/models/expressions.txt index e3078b5449..87c3108509 100644 --- a/docs/ref/models/expressions.txt +++ b/docs/ref/models/expressions.txt @@ -24,10 +24,6 @@ variables, and even other expressions. Some examples ============= -.. versionchanged:: 1.8 - - Some of the examples rely on functionality that is new in Django 1.8. - .. code-block:: python from django.db.models import F, Count @@ -211,8 +207,6 @@ directly support ``output_field`` you will need to wrap the expression with ``Func()`` expressions ---------------------- -.. versionadded:: 1.8 - ``Func()`` expressions are the base type of all expressions that involve database functions like ``COALESCE`` and ``LOWER``, or aggregates like ``SUM``. They can be used directly:: @@ -322,18 +316,9 @@ should define the desired ``output_field``. For example, adding an ``IntegerField()`` and a ``FloatField()`` together should probably have ``output_field=FloatField()`` defined. -.. versionchanged:: 1.8 - - ``output_field`` is a new parameter. - The ``**extra`` kwargs are ``key=value`` pairs that can be interpolated into the ``template`` attribute. -.. versionadded:: 1.8 - - Aggregate functions can now use arithmetic and reference multiple - model fields in a single function. - Creating your own Aggregate Functions ------------------------------------- @@ -390,8 +375,6 @@ output value. .. class:: ExpressionWrapper(expression, output_field) -.. versionadded:: 1.8 - ``ExpressionWrapper`` simply surrounds another expression and provides access to properties, such as ``output_field``, that may not be available on other expressions. ``ExpressionWrapper`` is necessary when using arithmetic on @@ -401,8 +384,6 @@ expressions. ``ExpressionWrapper`` is necessary when using arithmetic on Conditional expressions ----------------------- -.. versionadded:: 1.8 - Conditional expressions allow you to use :keyword:`if` ... :keyword:`elif` ... :keyword:`else` logic in queries. Django natively supports SQL ``CASE`` expressions. For more details see :doc:`conditional-expressions`. @@ -410,8 +391,6 @@ expressions. For more details see :doc:`conditional-expressions`. Raw SQL expressions ------------------- -.. versionadded:: 1.8 - .. currentmodule:: django.db.models.expressions .. class:: RawSQL(sql, params, output_field=None) diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index df3df016a2..99f25fd924 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -228,11 +228,6 @@ The default value is used when new model instances are created and a value isn't provided for the field. When the field is a primary key, the default is also used when the field is set to ``None``. -.. versionchanged:: 1.8 - - The default wasn't used for ``None`` primary key values in previous - versions. - ``editable`` ------------ @@ -574,8 +569,6 @@ when :attr:`~django.forms.Field.localize` is ``False`` or ``DurationField`` ----------------- -.. versionadded:: 1.8 - .. class:: DurationField(**options) A field for storing periods of time - modeled in Python by @@ -597,11 +590,6 @@ SECOND(6)``. Otherwise a ``bigint`` of microseconds is used. A :class:`CharField` that checks that the value is a valid email address. It uses :class:`~django.core.validators.EmailValidator` to validate the input. -.. versionchanged:: 1.8 - - The default ``max_length`` was increased from 75 to 254 in order to be - compliant with RFC3696/5321. - ``FileField`` ------------- @@ -1079,8 +1067,6 @@ Like all :class:`CharField` subclasses, :class:`URLField` takes the optional ``UUIDField`` ------------- -.. versionadded:: 1.8 - .. class:: UUIDField(**options) A field for storing universally unique identifiers. Uses Python's @@ -1757,8 +1743,6 @@ Field API reference .. method:: from_db_value(value, expression, connection, context) - .. versionadded:: 1.8 - Converts a value as returned by the database to a Python object. It is the reverse of :meth:`get_prep_value`. @@ -1878,8 +1862,6 @@ Field API reference Field attribute reference ========================= -.. versionadded:: 1.8 - Every ``Field`` instance contains several attributes that allow introspecting its behavior. Use these attributes instead of ``isinstance`` checks when you need to write code that depends on a field's functionality. diff --git a/docs/ref/models/instances.txt b/docs/ref/models/instances.txt index 85d68feaf2..86438b64bc 100644 --- a/docs/ref/models/instances.txt +++ b/docs/ref/models/instances.txt @@ -67,8 +67,6 @@ Customizing model loading .. classmethod:: Model.from_db(db, field_names, values) -.. versionadded:: 1.8 - The ``from_db()`` method can be used to customize model instance creation when loading from the database. @@ -121,8 +119,6 @@ Refreshing objects from database .. method:: Model.refresh_from_db(using=None, fields=None, **kwargs) -.. versionadded:: 1.8 - If you need to reload a model's values from the database, you can use the ``refresh_from_db()`` method. When this method is called without arguments the following is done: @@ -178,8 +174,6 @@ all of the instance's fields when a deferred field is reloaded:: .. method:: Model.get_deferred_fields() -.. versionadded:: 1.8 - A helper method that returns a set containing the attribute names of all those fields that are currently deferred for this model. @@ -582,8 +576,6 @@ the data that's currently in the database. Django version N+1. Pickles should not be used as part of a long-term archival strategy. - .. versionadded:: 1.8 - Since pickle compatibility errors can be difficult to diagnose, such as silently corrupted objects, a ``RuntimeWarning`` is raised when you try to unpickle a model in a Django version that is different than the one in diff --git a/docs/ref/models/lookups.txt b/docs/ref/models/lookups.txt index 58e6e35bbf..eae0d2a5b3 100644 --- a/docs/ref/models/lookups.txt +++ b/docs/ref/models/lookups.txt @@ -141,8 +141,6 @@ Transform reference .. attribute:: bilateral - .. versionadded:: 1.8 - A boolean indicating whether this transformation should apply to both ``lhs`` and ``rhs``. Bilateral transformations will be applied to ``rhs`` in the same order as they appear in the lookup expression. By default it is set diff --git a/docs/ref/models/meta.txt b/docs/ref/models/meta.txt index d1ae35ff3e..47e47e2c8f 100644 --- a/docs/ref/models/meta.txt +++ b/docs/ref/models/meta.txt @@ -18,15 +18,6 @@ Methods that it provides can be used to: * Retrieve all field instances of a model * Retrieve a single field instance of a model by name -.. versionchanged:: 1.8 - - The Model ``_meta`` API has always existed as a Django internal, but - wasn't formally documented and supported. As part of the effort to - make this API public, some of the already existing API entry points - have changed slightly. A :ref:`migration guide <migrating-old-meta-api>` - has been provided to assist in converting your code to use the new, - official API. - .. _model-meta-field-api: Field access API @@ -75,8 +66,6 @@ Retrieving all field instances of a model .. method:: Options.get_fields(include_parents=True, include_hidden=False) - .. versionadded:: 1.8 - Returns a tuple of fields associated with a model. ``get_fields()`` accepts two parameters that can be used to control which fields are returned: diff --git a/docs/ref/models/options.txt b/docs/ref/models/options.txt index 8b77c7101d..65fa8acfea 100644 --- a/docs/ref/models/options.txt +++ b/docs/ref/models/options.txt @@ -100,8 +100,6 @@ Django quotes column and table names behind the scenes. .. attribute:: Options.default_related_name - .. versionadded:: 1.8 - The name that will be used by default for the relation from a related object back to this one. The default is ``<model_name>_set``. diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt index ac62089bf7..ebb9019784 100644 --- a/docs/ref/models/querysets.txt +++ b/docs/ref/models/querysets.txt @@ -114,8 +114,6 @@ described here. Django version N+1. Pickles should not be used as part of a long-term archival strategy. - .. versionadded:: 1.8 - Since pickle compatibility errors can be difficult to diagnose, such as silently corrupted objects, a ``RuntimeWarning`` is raised when you try to unpickle a queryset in a Django version that is different than the one in @@ -230,12 +228,6 @@ reference to a field on the model (or any related models), or an aggregate expression (averages, sums, etc) that has been computed over the objects that are related to the objects in the ``QuerySet``. -.. versionadded:: 1.8 - - Previous versions of Django only allowed aggregate functions to be used as - annotations. It is now possible to annotate a model with all kinds of - expressions. - Each argument to ``annotate()`` is an annotation that will be added to each object in the ``QuerySet`` that is returned. @@ -334,10 +326,6 @@ calling ``asc()`` or ``desc()`` on the expression:: Entry.objects.order_by(Coalesce('summary', 'headline').desc()) -.. versionadded:: 1.8 - - Ordering by query expressions was added. - Be cautious when ordering by fields in related models if you are also using :meth:`distinct()`. See the note in :meth:`distinct` for an explanation of how related model ordering can change the expected results. @@ -381,10 +369,6 @@ ordering:: Entry.objects.order_by(Lower('headline').desc()) -.. versionadded:: 1.8 - - The ability to order by expressions like ``Lower`` was added. - If you don't want any ordering to be applied to a query, not even the default ordering, call :meth:`order_by()` with no parameters. @@ -1224,10 +1208,6 @@ of the arguments is required, but you should use at least one of them. If you need to use a literal ``%s`` inside your select string, use the sequence ``%%s``. - .. versionchanged:: 1.8 - - Prior to 1.8, you were unable to escape a literal ``%s``. - * ``where`` / ``tables`` You can define explicit SQL ``WHERE`` clauses — perhaps to perform @@ -2868,21 +2848,12 @@ All aggregates have the following parameters in common: A string that references a field on the model, or a :doc:`query expression </ref/models/expressions>`. -.. versionadded:: 1.8 - - Aggregate functions are now able to reference multiple fields in complex - computations. - ``output_field`` ~~~~~~~~~~~~~~~~ An optional argument that represents the :doc:`model field </ref/models/fields>` of the return value -.. versionadded:: 1.8 - - The ``output_field`` argument was added. - .. note:: When combining multiple field types, Django can only determine the diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt index 76a624d984..9360095e19 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -208,8 +208,6 @@ All attributes should be considered read-only, unless stated otherwise below. .. attribute:: HttpRequest.current_app - .. versionadded:: 1.8 - Not defined by Django itself, but if set, the :ttag:`url` template tag will use its value as the ``current_app`` argument to :func:`~django.core.urlresolvers.reverse()`. @@ -401,10 +399,6 @@ a subclass of dictionary. Exceptions are outlined here: Strings for setting both keys and values will be converted from ``encoding`` to unicode. If encoding is not set, it defaults to :setting:`DEFAULT_CHARSET`. - .. versionchanged:: 1.8 - - In previous versions, ``query_string`` was a required positional argument. - .. method:: QueryDict.__getitem__(key) Returns the value for the given key. If the key has more than one value, @@ -650,8 +644,6 @@ Attributes .. attribute:: HttpResponse.charset - .. versionadded:: 1.8 - A string denoting the charset in which the response will be encoded. If not given at ``HttpResponse`` instantiation time, it will be extracted from ``content_type`` and if that is unsuccessful, the @@ -690,8 +682,6 @@ Attributes .. attribute:: HttpResponse.closed - .. versionadded:: 1.8 - ``True`` if the response has been closed. Methods @@ -722,10 +712,6 @@ Methods given it will be extracted from ``content_type``, and if that is unsuccessful, the :setting:`DEFAULT_CHARSET` setting will be used. - .. versionadded:: 1.8 - - The ``charset`` parameter was added. - .. method:: HttpResponse.__setitem__(header, value) Sets the given header name to the given value. Both ``header`` and @@ -747,8 +733,6 @@ Methods .. method:: HttpResponse.setdefault(header, value) - .. versionadded:: 1.8 - Sets a header unless it has already been set. .. method:: HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False) @@ -820,22 +804,16 @@ Methods .. method:: HttpResponse.getvalue() - .. versionadded:: 1.8 - Returns the value of :attr:`HttpResponse.content`. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.writable() - .. versionadded:: 1.8 - Always ``True``. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.writelines(lines) - .. versionadded:: 1.8 - Writes a list of lines to the response. Line separators are not added. This method makes an :class:`HttpResponse` instance a stream-like object. diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt index 9c1ed34dd9..dba54e26b4 100644 --- a/docs/ref/settings.txt +++ b/docs/ref/settings.txt @@ -802,10 +802,6 @@ This is an Oracle-specific setting. The name of the tablespace that will be used when running tests. If not provided, Django will use ``'test_' + USER``. -.. versionchanged:: 1.8 - - Previously Django used ``'test_' + NAME`` if not provided. - .. setting:: TEST_TBLSPACE_TMP TBLSPACE_TMP @@ -818,17 +814,11 @@ This is an Oracle-specific setting. The name of the temporary tablespace that will be used when running tests. If not provided, Django will use ``'test_' + USER + '_temp'``. -.. versionchanged:: 1.8 - - Previously Django used ``'test_' + NAME + '_temp'`` if not provided. - .. setting:: DATAFILE DATAFILE ^^^^^^^^ -.. versionadded:: 1.8 - Default: ``None`` This is an Oracle-specific setting. @@ -841,8 +831,6 @@ use ``TBLSPACE + '.dbf'``. DATAFILE_TMP ^^^^^^^^^^^^ -.. versionadded:: 1.8 - Default: ``None`` This is an Oracle-specific setting. @@ -855,14 +843,8 @@ will use ``TBLSPACE_TMP + '.dbf'``. DATAFILE_MAXSIZE ^^^^^^^^^^^^^^^^ -.. versionadded:: 1.8 - Default: ``'500M'`` -.. versionchanged:: 1.8 - - The previous value was 200M and was not user customizable. - This is an Oracle-specific setting. The maximum size that the DATAFILE is allowed to grow to. @@ -872,14 +854,8 @@ The maximum size that the DATAFILE is allowed to grow to. DATAFILE_TMP_MAXSIZE ^^^^^^^^^^^^^^^^^^^^ -.. versionadded:: 1.8 - Default: ``'500M'`` -.. versionchanged:: 1.8 - - The previous value was 200M and was not user customizable. - This is an Oracle-specific setting. The maximum size that the DATAFILE_TMP is allowed to grow to. @@ -1261,8 +1237,6 @@ exclusive, so only set one of those settings to ``True``. EMAIL_SSL_CERTFILE ------------------ -.. versionadded:: 1.8 - Default: ``None`` If :setting:`EMAIL_USE_SSL` or :setting:`EMAIL_USE_TLS` is ``True``, you can @@ -1274,8 +1248,6 @@ for the SSL connection. EMAIL_SSL_KEYFILE ----------------- -.. versionadded:: 1.8 - Default: ``None`` If :setting:`EMAIL_USE_SSL` or :setting:`EMAIL_USE_TLS` is ``True``, you can @@ -1293,8 +1265,6 @@ file and private key file are handled. EMAIL_TIMEOUT ------------- -.. versionadded:: 1.8 - Default: ``None`` Specifies a timeout in seconds for blocking operations like the connection @@ -1463,19 +1433,17 @@ like:: __init__.py formats.py -.. versionchanged:: 1.8 - - You can also set this setting to a list of Python paths, for example:: +You can also set this setting to a list of Python paths, for example:: - FORMAT_MODULE_PATH = [ - 'mysite.formats', - 'some_app.formats', - ] + FORMAT_MODULE_PATH = [ + 'mysite.formats', + 'some_app.formats', + ] - When Django searches for a certain format, it will go through all given - Python paths until it finds a module that actually defines the given - format. This means that formats defined in packages farther up in the list - will take precedence over the same formats in packages farther down. +When Django searches for a certain format, it will go through all given Python +paths until it finds a module that actually defines the given format. This +means that formats defined in packages farther up in the list will take +precedence over the same formats in packages farther down. Available formats are :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT`, :setting:`DATETIME_FORMAT`, :setting:`YEAR_MONTH_FORMAT`, @@ -1580,10 +1548,6 @@ It serves two purposes: site. It also provides the fallback translation when a translation for a given literal doesn't exist for the user's preferred language. -.. versionchanged:: 1.8 - - The fallback for translation literals was added. - See :ref:`how-django-discovers-language-preference` for more details. .. _list of language identifiers: http://www.i18nguy.com/unicode/language-identifiers.html @@ -1967,8 +1931,6 @@ affect them. SECURE_BROWSER_XSS_FILTER ------------------------- -.. versionadded:: 1.8 - Default: ``False`` If ``True``, the :class:`~django.middleware.security.SecurityMiddleware` sets @@ -1979,8 +1941,6 @@ the :ref:`x-xss-protection` header on all responses that do not already have it. SECURE_CONTENT_TYPE_NOSNIFF --------------------------- -.. versionadded:: 1.8 - Default: ``False`` If ``True``, the :class:`~django.middleware.security.SecurityMiddleware` @@ -1992,8 +1952,6 @@ already have it. SECURE_HSTS_INCLUDE_SUBDOMAINS ------------------------------ -.. versionadded:: 1.8 - Default: ``False`` If ``True``, the :class:`~django.middleware.security.SecurityMiddleware` adds @@ -2011,8 +1969,6 @@ non-zero value. SECURE_HSTS_SECONDS ------------------- -.. versionadded:: 1.8 - Default: ``0`` If set to a non-zero integer value, the @@ -2090,8 +2046,6 @@ available in ``request.META``.) SECURE_REDIRECT_EXEMPT ---------------------- -.. versionadded:: 1.8 - Default: ``[]`` (Empty list) If a URL path matches a regular expression in this list, the request will not be @@ -2103,8 +2057,6 @@ setting has no effect. SECURE_SSL_HOST --------------- -.. versionadded:: 1.8 - Default: ``None`` If a string (e.g. ``secure.example.com``), all SSL redirects will be directed @@ -2117,8 +2069,6 @@ setting has no effect. SECURE_SSL_REDIRECT ------------------- -.. versionadded:: 1.8 - Default: ``False``. If ``True``, the :class:`~django.middleware.security.SecurityMiddleware` @@ -2225,8 +2175,6 @@ See also the :doc:`/ref/checks` documentation. TEMPLATES --------- -.. versionadded:: 1.8 - Default: ``[]`` (Empty list) A list containing the settings for all template engines to be used with diff --git a/docs/ref/signals.txt b/docs/ref/signals.txt index aa85904843..ca6f9c2de6 100644 --- a/docs/ref/signals.txt +++ b/docs/ref/signals.txt @@ -496,10 +496,6 @@ Arguments sent with this signal: ``environ`` The ``environ`` dictionary provided to the request. -.. versionchanged:: 1.8 - - The ``environ`` argument was added. - request_finished ---------------- @@ -562,10 +558,6 @@ distinguish between the two. You can also import this signal from ``django.core.signals`` to avoid importing from ``django.test`` in non-test situations. -.. versionchanged:: 1.8 - - The signal was moved to ``django.core.signals`` as described above. - Arguments sent with this signal: ``sender`` diff --git a/docs/ref/template-response.txt b/docs/ref/template-response.txt index 00198cb4e2..1b99b10b3b 100644 --- a/docs/ref/template-response.txt +++ b/docs/ref/template-response.txt @@ -90,10 +90,6 @@ Methods The :setting:`NAME <TEMPLATES-NAME>` of a template engine to use for loading the template. - .. versionchanged:: 1.8 - - The ``charset`` and ``using`` parameters were added. - .. method:: SimpleTemplateResponse.resolve_context(context) Preprocesses context data that will be used for rendering a template. @@ -189,10 +185,6 @@ Methods The :setting:`NAME <TEMPLATES-NAME>` of a template engine to use for loading the template. - .. versionchanged:: 1.8 - - The ``charset`` and ``using`` parameters were added. - The rendering process ===================== diff --git a/docs/ref/templates/api.txt b/docs/ref/templates/api.txt index d8433ad955..b659831377 100644 --- a/docs/ref/templates/api.txt +++ b/docs/ref/templates/api.txt @@ -50,8 +50,6 @@ what's passed by :class:`~django.template.backends.django.DjangoTemplates`. .. class:: Engine(dirs=None, app_dirs=False, context_processors=None, debug=False, loaders=None, string_if_invalid='', file_charset='utf-8', libraries=None, builtins=None) - .. versionadded:: 1.8 - When instantiating an ``Engine`` all arguments must be passed as keyword arguments: @@ -600,12 +598,6 @@ processors:: 'django.contrib.messages.context_processors.messages', ] -.. versionchanged:: 1.8 - - Built-in template context processors were moved from - ``django.core.context_processors`` to - ``django.template.context_processors`` in Django 1.8. - In addition to these, :class:`RequestContext` always enables ``'django.template.context_processors.csrf'``. This is a security related context processor required by the admin and other contrib apps, and, in case @@ -774,10 +766,6 @@ way of specifying template directories is by using the :setting:`DIRS The :setting:`DIRS <TEMPLATES-DIRS>` option ------------------------------------------- -.. versionchanged:: 1.8 - - This value used to be defined by the ``TEMPLATE_DIRS`` setting. - Tell Django what your template directories are by using the :setting:`DIRS <TEMPLATES-DIRS>` option in the :setting:`TEMPLATES` setting in your settings file — or the ``dirs`` argument of :class:`~django.template.Engine`. This @@ -932,8 +920,6 @@ loaders that come with Django: ``django.template.loaders.locmem.Loader`` -.. versionadded:: 1.8 - .. class:: locmem.Loader Loads templates from a Python dictionary. This is useful for testing. diff --git a/docs/ref/templates/builtins.txt b/docs/ref/templates/builtins.txt index 1623ff357b..e787ee8781 100644 --- a/docs/ref/templates/builtins.txt +++ b/docs/ref/templates/builtins.txt @@ -777,10 +777,6 @@ output (as a string) inside a variable. This is useful if you want to use {% now "Y" as current_year %} {% blocktrans %}Copyright {{ current_year }}{% endblocktrans %} -.. versionadded:: 1.8 - -The ability to use the "as" syntax was added. - .. templatetag:: regroup regroup @@ -1679,10 +1675,7 @@ For example:: If ``value`` is ``['a', 'b', 'c', 'd']`` or ``"abcd"``, the output will be ``4``. -.. versionchanged:: 1.8 - - The filter returns ``0`` for an undefined variable. Previously, it returned - an empty string. +The filter returns ``0`` for an undefined variable. .. templatefilter:: length_is @@ -2239,12 +2232,6 @@ It also supports domain-only links ending in one of the original top level domains (``.com``, ``.edu``, ``.gov``, ``.int``, ``.mil``, ``.net``, and ``.org``). For example, ``djangoproject.com`` gets converted. -.. versionchanged:: 1.8 - - Support for domain-only links that include characters after the top-level - domain (e.g. ``djangoproject.com/`` and ``djangoproject.com/download/``) - was added. - Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens), and ``urlize`` will still do the right thing. diff --git a/docs/ref/urls.txt b/docs/ref/urls.txt index b1053c6f71..c54b1e4cab 100644 --- a/docs/ref/urls.txt +++ b/docs/ref/urls.txt @@ -18,11 +18,6 @@ Helper function to return a URL pattern for serving files in debug mode:: # ... the rest of your URLconf goes here ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) -.. versionchanged:: 1.8 - - The ``view`` argument changed from a string - (``'django.views.static.serve'``) to the function. - url() ----- diff --git a/docs/ref/utils.txt b/docs/ref/utils.txt index 6843c8c9ce..29564dddc4 100644 --- a/docs/ref/utils.txt +++ b/docs/ref/utils.txt @@ -138,8 +138,6 @@ The functions defined in this module share the following properties: .. function:: parse_duration(value) - .. versionadded:: 1.8 - Parses a string and returns a :class:`datetime.timedelta`. Expects data in the format ``"DD HH:MM:SS.uuuuuu"`` or as specified by ISO @@ -277,8 +275,6 @@ The functions defined in this module share the following properties: .. function:: uri_to_iri(uri) - .. versionadded:: 1.8 - Converts a Uniform Resource Identifier into an Internationalized Resource Identifier. @@ -301,8 +297,6 @@ The functions defined in this module share the following properties: .. function:: escape_uri_path(path) - .. versionadded:: 1.8 - Escapes the unsafe characters from the path portion of a Uniform Resource Identifier (URI). @@ -510,8 +504,6 @@ Atom1Feed database by some other process in the brief interval between subsequent invocations of a method on the same instance. - .. versionadded:: 1.8 - You can use the ``name`` argument to make cached properties of other methods. For example, if you had an expensive ``get_friends()`` method and wanted to allow calling it without retrieving the cached value, you could @@ -657,8 +649,6 @@ escaping HTML. .. function:: html_safe() - .. versionadded:: 1.8 - The ``__html__()`` method on a class helps non-Django templates detect classes whose output doesn't require HTML escaping. @@ -916,9 +906,7 @@ appropriate entities. ``None``, the :ref:`current time zone <default-current-time-zone>` is unset on entry with :func:`deactivate()` instead. - .. versionchanged:: 1.8 - - ``override`` is now usable as a function decorator. + ``override`` is also usable as a function decorator. .. function:: localtime(value, timezone=None) @@ -979,10 +967,6 @@ appropriate entities. ``is_dst`` has no effect when ``pytz`` is not installed. - .. versionchanged:: 1.8 - - In older versions of Django, ``timezone`` was a required argument. - .. versionchanged:: 1.9 The ``is_dst`` argument was added. @@ -994,10 +978,6 @@ appropriate entities. aware :class:`~datetime.datetime`. If ``timezone`` is set to ``None``, it defaults to the :ref:`current time zone <default-current-time-zone>`. - .. versionchanged:: 1.8 - - In older versions of Django, ``timezone`` was a required argument. - .. _pytz: http://pytz.sourceforge.net/ ``django.utils.translation`` @@ -1095,9 +1075,7 @@ For a complete discussion on the usage of the following see the is ``True``. If you pass ``None`` as the language argument, a ``NullTranslations()`` instance is activated within the context. - .. versionchanged:: 1.8 - - ``override`` is now usable as a function decorator. + ``override`` is also usable as a function decorator. .. function:: get_language() @@ -1105,11 +1083,6 @@ For a complete discussion on the usage of the following see the translations are temporarily deactivated (by :func:`deactivate_all()` or when ``None`` is passed to :func:`override()`). - .. versionchanged:: 1.8 - - Before Django 1.8, ``get_language()`` always returned - :setting:`LANGUAGE_CODE` when translations were deactivated. - .. function:: get_language_bidi() Returns selected language's BiDi layout: diff --git a/docs/ref/validators.txt b/docs/ref/validators.txt index 9bbcf9bcbc..cec54e8d87 100644 --- a/docs/ref/validators.txt +++ b/docs/ref/validators.txt @@ -163,11 +163,6 @@ to, or in lieu of custom ``field.clean()`` methods. .. _valid URI schemes: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml - .. versionchanged:: 1.8 - - Support for IPv6 addresses, unicode domains, and URLs containing - authentication data was added. - ``validate_email`` ------------------ @@ -242,10 +237,6 @@ to, or in lieu of custom ``field.clean()`` methods. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of ``'max_value'`` if ``value`` is greater than ``max_value``. - .. versionchanged:: 1.8 - - The ``message`` parameter was added. - ``MinValueValidator`` --------------------- @@ -254,10 +245,6 @@ to, or in lieu of custom ``field.clean()`` methods. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of ``'min_value'`` if ``value`` is less than ``min_value``. - .. versionchanged:: 1.8 - - The ``message`` parameter was added. - ``MaxLengthValidator`` ---------------------- @@ -266,10 +253,6 @@ to, or in lieu of custom ``field.clean()`` methods. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of ``'max_length'`` if the length of ``value`` is greater than ``max_length``. - .. versionchanged:: 1.8 - - The ``message`` parameter was added. - ``MinLengthValidator`` ---------------------- @@ -278,10 +261,6 @@ to, or in lieu of custom ``field.clean()`` methods. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of ``'min_length'`` if the length of ``value`` is less than ``min_length``. - .. versionchanged:: 1.8 - - The ``message`` parameter was added. - ``DecimalValidator`` -------------------- diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt index e504136bf6..2bb4b6160f 100644 --- a/docs/releases/1.7.txt +++ b/docs/releases/1.7.txt @@ -77,11 +77,6 @@ but a few of the key features are: :ref:`ForeignKey <ref-foreignkey>` or :ref:`ManyToManyField <ref-manytomany>` to) apps with migrations. -* If you are upgrading from South, see our :ref:`upgrading-from-south` - documentation, and third-party app authors should read the - `South 1.0 release notes <http://south.readthedocs.org/en/latest/releasenotes/1.0.html#library-migration-path>`_ - for details on how to support South and Django migrations simultaneously. - .. _app-loading-refactor-17-release-note: App-loading refactor diff --git a/docs/topics/auth/customizing.txt b/docs/topics/auth/customizing.txt index 8b4da2048e..01d52d9262 100644 --- a/docs/topics/auth/customizing.txt +++ b/docs/topics/auth/customizing.txt @@ -180,13 +180,10 @@ The permissions given to the user will be the superset of all permissions returned by all backends. That is, Django grants a permission to a user that any one backend grants. -.. versionadded:: 1.8 - - If a backend raises a :class:`~django.core.exceptions.PermissionDenied` - exception in :meth:`~django.contrib.auth.models.User.has_perm()` or - :meth:`~django.contrib.auth.models.User.has_module_perms()`, - the authorization will immediately fail and Django - won't check the backends that follow. +If a backend raises a :class:`~django.core.exceptions.PermissionDenied` +exception in :meth:`~django.contrib.auth.models.User.has_perm()` or +:meth:`~django.contrib.auth.models.User.has_module_perms()`, the authorization +will immediately fail and Django won't check the backends that follow. The simple backend above could implement permissions for the magic admin fairly simply:: @@ -494,11 +491,6 @@ Django expects your custom User model to meet some minimum requirements. what these two methods return - if you want, they can return exactly the same value. -.. versionchanged:: 1.8 - - Older versions of Django required your model to have an integer primary - key as well. - The easiest way to construct a compliant custom User model is to inherit from :class:`~django.contrib.auth.models.AbstractBaseUser`. :class:`~django.contrib.auth.models.AbstractBaseUser` provides the core @@ -526,8 +518,6 @@ password resets. You must then provide some key implementation details: ... USERNAME_FIELD = 'identifier' - .. versionadded:: 1.8 - :attr:`USERNAME_FIELD` now supports :class:`~django.db.models.ForeignKey`\s. Since there is no way to pass model instances during the :djadmin:`createsuperuser` prompt, expect the @@ -562,8 +552,6 @@ password resets. You must then provide some key implementation details: ``User`` model, but should *not* contain the ``USERNAME_FIELD`` or ``password`` as these fields will always be prompted for. - .. versionadded:: 1.8 - :attr:`REQUIRED_FIELDS` now supports :class:`~django.db.models.ForeignKey`\s. Since there is no way to pass model instances during the :djadmin:`createsuperuser` prompt, expect the diff --git a/docs/topics/auth/default.txt b/docs/topics/auth/default.txt index 9eeae69ed2..9ae5a50cd5 100644 --- a/docs/topics/auth/default.txt +++ b/docs/topics/auth/default.txt @@ -1516,8 +1516,6 @@ provides several built-in forms located in :mod:`django.contrib.auth.forms`: .. method:: send_email(subject_template_name, email_template_name, context, from_email, to_email, html_email_template_name=None) - .. versionadded:: 1.8 - Uses the arguments to send an ``EmailMultiAlternatives``. Can be overridden to customize how the email is sent to the user. diff --git a/docs/topics/checks.txt b/docs/topics/checks.txt index 978bca7f5b..5521c9cb8d 100644 --- a/docs/topics/checks.txt +++ b/docs/topics/checks.txt @@ -99,8 +99,6 @@ make the following call:: # ... perform compatibility checks and collect errors return errors -.. versionadded:: 1.8 - You can register "deployment checks" that are only relevant to a production settings file like this:: @@ -121,10 +119,6 @@ The code below is equivalent to the code above:: ... register(my_check, Tags.security, deploy=True) -.. versionchanged:: 1.8 - - The ability to use register as a function was added. - .. _field-checking: Field, Model, and Manager checks diff --git a/docs/topics/class-based-views/generic-editing.txt b/docs/topics/class-based-views/generic-editing.txt index 0ada8db42a..7b3b5083cc 100644 --- a/docs/topics/class-based-views/generic-editing.txt +++ b/docs/topics/class-based-views/generic-editing.txt @@ -143,16 +143,6 @@ If you specify both the :attr:`~django.views.generic.edit.ModelFormMixin.fields` and :attr:`~django.views.generic.edit.FormMixin.form_class` attributes, an :exc:`~django.core.exceptions.ImproperlyConfigured` exception will be raised. -.. versionchanged:: 1.8 - - Omitting the ``fields`` attribute was previously allowed and resulted in a - form with all of the model's fields. - -.. versionchanged:: 1.8 - - Previously if both ``fields`` and ``form_class`` were specified, - ``fields`` was silently ignored. - Finally, we hook these new views into the URLconf: .. snippet:: diff --git a/docs/topics/conditional-view-processing.txt b/docs/topics/conditional-view-processing.txt index 77080266de..ed319474fa 100644 --- a/docs/topics/conditional-view-processing.txt +++ b/docs/topics/conditional-view-processing.txt @@ -33,11 +33,6 @@ returned. When you need more fine-grained control you may use per-view conditional processing functions. -.. versionchanged:: 1.8 - - Support for the ``If-unmodified-since`` header was added to conditional - view processing. - .. _conditional-decorators: The ``condition`` decorator diff --git a/docs/topics/db/examples/many_to_one.txt b/docs/topics/db/examples/many_to_one.txt index efa5c37f3b..93cc3f093f 100644 --- a/docs/topics/db/examples/many_to_one.txt +++ b/docs/topics/db/examples/many_to_one.txt @@ -60,13 +60,6 @@ raises ``ValueError``:: ... ValueError: save() prohibited to prevent data loss due to unsaved related object 'reporter'. -.. versionchanged:: 1.8.4 - - Previously, saving an object with unsaved related objects did not raise an - error and could result in silent data loss. In 1.8-1.8.3, unsaved model - instances couldn't be assigned to related fields, but this restriction was - removed to allow easier usage of in-memory models. - Article objects have access to their related Reporter objects:: >>> r = a.reporter diff --git a/docs/topics/db/examples/one_to_one.txt b/docs/topics/db/examples/one_to_one.txt index 8eb003b167..dbf46fc079 100644 --- a/docs/topics/db/examples/one_to_one.txt +++ b/docs/topics/db/examples/one_to_one.txt @@ -101,13 +101,6 @@ raises ``ValueError``:: ... ValueError: save() prohibited to prevent data loss due to unsaved related object 'place'. -.. versionchanged:: 1.8.4 - - Previously, saving an object with unsaved related objects did not raise an - error and could result in silent data loss. In 1.8-1.8.3, unsaved model - instances couldn't be assigned to related fields, but this restriction was - removed to allow easier usage of in-memory models. - Restaurant.objects.all() just returns the Restaurants, not the Places. Note that there are two restaurants - Ace Hardware the Restaurant was created in the call to r.place = p2:: diff --git a/docs/topics/db/transactions.txt b/docs/topics/db/transactions.txt index ad4e027ef5..618d0cc074 100644 --- a/docs/topics/db/transactions.txt +++ b/docs/topics/db/transactions.txt @@ -202,11 +202,6 @@ Django provides a single API to control database transactions. You may use ``atomic`` when autocommit is turned off. It will only use savepoints, even for the outermost block. - .. versionchanged:: 1.8.5 - - Previously the outermost atomic block couldn't be declared with - ``savepoint=False`` when autocommit was turned off. - .. admonition:: Performance considerations Open transactions have a performance cost for your database server. To diff --git a/docs/topics/email.txt b/docs/topics/email.txt index 16db4976d6..15f82a3a8e 100644 --- a/docs/topics/email.txt +++ b/docs/topics/email.txt @@ -277,10 +277,6 @@ All parameters are optional and can be set at any time prior to calling the * ``reply_to``: A list or tuple of recipient addresses used in the "Reply-To" header when sending the email. -.. versionchanged:: 1.8 - - The ``reply_to`` parameter was added. - For example:: email = EmailMessage('Hello', 'Body goes here', 'from@example.com', @@ -412,10 +408,6 @@ It can also be used as a context manager, which will automatically call mail.EmailMessage(subject2, body2, from2, [to2], connection=connection).send() -.. versionadded:: 1.8 - - The context manager protocol was added. - Obtaining an instance of an email backend ----------------------------------------- @@ -472,12 +464,6 @@ SMTP backend If unspecified, the default ``timeout`` will be the one provided by :func:`socket.getdefaulttimeout()`, which defaults to ``None`` (no timeout). - .. versionchanged:: 1.8 - - The ``ssl_keyfile``, and ``ssl_certfile`` parameters and corresponding - settings were added. The ability to customize ``timeout`` using - a setting (:setting:`EMAIL_TIMEOUT`) was added. - .. _topic-email-console-backend: Console backend diff --git a/docs/topics/forms/index.txt b/docs/topics/forms/index.txt index c9cce5121f..27a5314347 100644 --- a/docs/topics/forms/index.txt +++ b/docs/topics/forms/index.txt @@ -615,10 +615,6 @@ errors. For example, ``{{ form.non_field_errors }}`` would look like: <li>Generic validation error</li> </ul> -.. versionchanged:: 1.8 - - The ``nonfield`` class as described in the example above was added. - See :doc:`/ref/forms/api` for more on errors, styling, and working with form attributes in templates. diff --git a/docs/topics/forms/modelforms.txt b/docs/topics/forms/modelforms.txt index e9898c6fff..6370636d4e 100644 --- a/docs/topics/forms/modelforms.txt +++ b/docs/topics/forms/modelforms.txt @@ -436,12 +436,6 @@ In addition, Django applies the following rule: if you set ``editable=False`` on the model field, *any* form created from the model via ``ModelForm`` will not include that field. -.. versionchanged:: 1.8 - - In older versions, omitting both ``fields`` and ``exclude`` resulted in - a form with all the model's fields. Doing this now raises an - :exc:`~django.core.exceptions.ImproperlyConfigured` exception. - .. note:: Any fields not included in a form by the above logic @@ -745,12 +739,6 @@ exclude:: >>> AuthorFormSet = modelformset_factory(Author, exclude=('birth_date',)) -.. versionchanged:: 1.8 - - In older versions, omitting both ``fields`` and ``exclude`` resulted in - a formset with all the model's fields. Doing this now raises an - :exc:`~django.core.exceptions.ImproperlyConfigured` exception. - This will create a formset that is capable of working with the data associated with the ``Author`` model. It works just like a regular formset:: diff --git a/docs/topics/http/middleware.txt b/docs/topics/http/middleware.txt index c9812268a0..7ffaa9fc32 100644 --- a/docs/topics/http/middleware.txt +++ b/docs/topics/http/middleware.txt @@ -273,11 +273,6 @@ that piece of middleware from the middleware process and a debug message will be logged to the ``django.request`` logger when :setting:`DEBUG` is set to ``True``. -.. versionchanged:: 1.8 - - Previously, :exc:`~django.core.exceptions.MiddlewareNotUsed` exceptions - weren't logged. - Guidelines ---------- diff --git a/docs/topics/http/sessions.txt b/docs/topics/http/sessions.txt index da9e5ef567..6c0182ef33 100644 --- a/docs/topics/http/sessions.txt +++ b/docs/topics/http/sessions.txt @@ -226,12 +226,6 @@ You can edit it multiple times. can't be accessed again from the user's browser (for example, the :func:`django.contrib.auth.logout()` function calls it). - .. versionchanged:: 1.8 - - Deletion of the session cookie is a behavior new in Django 1.8. - Previously, the behavior was to regenerate the session key value that - was sent back to the user in the cookie. - .. method:: set_test_cookie() Sets a test cookie to determine whether the user's browser supports diff --git a/docs/topics/http/shortcuts.txt b/docs/topics/http/shortcuts.txt index 4ed7159de6..1635a4be01 100644 --- a/docs/topics/http/shortcuts.txt +++ b/docs/topics/http/shortcuts.txt @@ -56,10 +56,6 @@ Optional arguments The :setting:`NAME <TEMPLATES-NAME>` of a template engine to use for loading the template. -.. versionchanged:: 1.8 - - The ``using`` parameter was added. - Example ------- @@ -121,10 +117,6 @@ Optional arguments The :setting:`NAME <TEMPLATES-NAME>` of a template engine to use for loading the template. -.. versionchanged:: 1.8 - - The ``status`` and ``using`` parameters were added. - Example ------- diff --git a/docs/topics/i18n/formatting.txt b/docs/topics/i18n/formatting.txt index 62e4cc9ede..8f04d65c38 100644 --- a/docs/topics/i18n/formatting.txt +++ b/docs/topics/i18n/formatting.txt @@ -154,12 +154,6 @@ Django provides format definitions for many locales, but sometimes you might want to create your own, because a format files doesn't exist for your locale, or because you want to overwrite some of the values. - -.. versionchanged:: 1.8 - - The ability to specify :setting:`FORMAT_MODULE_PATH` as a list was added. - Previously, only a single string value was supported. - To use custom formats, specify the path where you'll place format files first. To do that, just set your :setting:`FORMAT_MODULE_PATH` setting to the package where format files will exist, for instance:: diff --git a/docs/topics/i18n/translation.txt b/docs/topics/i18n/translation.txt index d78862c82c..82d0e54358 100644 --- a/docs/topics/i18n/translation.txt +++ b/docs/topics/i18n/translation.txt @@ -872,10 +872,6 @@ If you enable the ``django.template.context_processors.i18n`` context processor then each ``RequestContext`` will have access to ``LANGUAGES``, ``LANGUAGE_CODE``, and ``LANGUAGE_BIDI`` as defined above. -.. versionchanged:: 1.8 - - The ``i18n`` context processor is not enabled by default for new projects. - .. templatetag:: get_language_info ``get_language_info`` diff --git a/docs/topics/logging.txt b/docs/topics/logging.txt index 3a8b80a0a5..2e8da1db4e 100644 --- a/docs/topics/logging.txt +++ b/docs/topics/logging.txt @@ -623,8 +623,6 @@ Python logging module. .. method:: send_mail(subject, message, *args, **kwargs) - .. versionadded:: 1.8 - Sends emails to admin users. To customize this behavior, you can subclass the :class:`~django.utils.log.AdminEmailHandler` class and override this method. diff --git a/docs/topics/migrations.txt b/docs/topics/migrations.txt index 57b6c3216a..546c1a9807 100644 --- a/docs/topics/migrations.txt +++ b/docs/topics/migrations.txt @@ -140,8 +140,6 @@ developers (or your production servers) check out the code, they'll get both the changes to your models and the accompanying migration at the same time. -.. versionadded:: 1.8 - If you want to give the migration(s) a meaningful name instead of a generated one, you can use the :djadminopt:`--name` option:: @@ -251,8 +249,6 @@ argument, please create a keyword argument and add something like Model managers ~~~~~~~~~~~~~~ -.. versionadded:: 1.8 - You can optionally serialize managers into migrations and have them available in :class:`~django.db.migrations.operations.RunPython` operations. This is done by defining a ``use_in_migrations`` attribute on the manager class:: @@ -333,12 +329,6 @@ Note that this only works given two things: that your database doesn't match your models, you'll just get errors when migrations try to modify those tables. -.. versionchanged:: 1.8 - - The ``--fake-initial`` flag to :djadmin:`migrate` was added. Previously, - Django would always automatically fake-apply initial migrations if it - detected that the tables exist. - .. _historical-models: Historical models @@ -380,8 +370,6 @@ can opt to move them into a superclass. Considerations when removing model fields ----------------------------------------- -.. versionadded:: 1.8 - Similar to the "references to historical functions" considerations described in the previous section, removing custom model fields from your project or third-party app will cause a problem if they are referenced in old migrations. @@ -781,48 +769,6 @@ should run unchanged on Django X.Y+1. The migrations system does not promise forwards-compatibility, however. New features may be added, and migration files generated with newer versions of Django may not work on older versions. -.. _upgrading-from-south: - -Upgrading from South --------------------- - -If you already have pre-existing migrations created with -`South <http://south.aeracode.org>`_, then the upgrade process to use -``django.db.migrations`` is quite simple: - -* Ensure all installs are fully up-to-date with their migrations. -* Remove ``'south'`` from :setting:`INSTALLED_APPS`. -* Delete all your (numbered) migration files, but not the directory or - ``__init__.py`` - make sure you remove the ``.pyc`` files too. -* Run ``python manage.py makemigrations``. Django should see the empty - migration directories and make new initial migrations in the new format. -* Run ``python manage.py migrate --fake-initial``. Django will see that the - tables for the initial migrations already exist and mark them as applied - without running them. (Django won't check that the table schema match your - models, just that the right table names exist). - -.. versionchanged:: 1.8 - - The :djadminopt:`--fake-initial` flag was added to :djadmin:`migrate`; - previously, initial migrations were always automatically fake-applied if - existing tables were detected. - -Libraries/Third-party Apps -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you are a library or app maintainer, and wish to support both South migrations -(for Django 1.6 and below) and Django migrations (for 1.7 and above) you should -keep two parallel migration sets in your app, one in each format. - -To aid in this, South 1.0 will automatically look for South-format migrations -in a ``south_migrations`` directory first, before looking in ``migrations``, -meaning that users' projects will transparently use the correct set as long -as you put your South migrations in the ``south_migrations`` directory and -your Django migrations in the ``migrations`` directory. - -More information is available in the -`South 1.0 release notes <http://south.readthedocs.org/en/latest/releasenotes/1.0.html#library-migration-path>`_. - .. seealso:: :doc:`The Migrations Operations Reference </ref/migration-operations>` diff --git a/docs/topics/signals.txt b/docs/topics/signals.txt index fbc2409570..71b8213dd9 100644 --- a/docs/topics/signals.txt +++ b/docs/topics/signals.txt @@ -261,10 +261,8 @@ be notified of a signal in the face of an error. and ensures all receivers are notified of the signal. If an error occurs, the error instance is returned in the tuple pair for the receiver that raised the error. -.. versionadded:: 1.8 - - The tracebacks are present on the ``__traceback__`` attribute - of the errors returned when calling ``send_robust()``. +The tracebacks are present on the ``__traceback__`` attribute of the errors +returned when calling ``send_robust()``. Disconnecting signals ===================== @@ -278,10 +276,6 @@ arguments are as described in :meth:`.Signal.connect`. The method returns The ``receiver`` argument indicates the registered receiver to disconnect. It may be ``None`` if ``dispatch_uid`` is used to identify the receiver. -.. versionchanged:: 1.8 - - The boolean return value was added. - .. deprecated:: 1.9 The ``weak`` argument is deprecated as it has no effect. It will be removed diff --git a/docs/topics/signing.txt b/docs/topics/signing.txt index 18d963c41b..9d3b76a205 100644 --- a/docs/topics/signing.txt +++ b/docs/topics/signing.txt @@ -142,10 +142,6 @@ created within a specified period of time:: otherwise raises ``SignatureExpired``. The ``max_age`` parameter can accept an integer or a :py:class:`datetime.timedelta` object. - .. versionchanged:: 1.8 - - Previously, the ``max_age`` parameter only accepted an integer. - Protecting complex data structures ---------------------------------- diff --git a/docs/topics/templates.txt b/docs/topics/templates.txt index af165b7052..f0abccc835 100644 --- a/docs/topics/templates.txt +++ b/docs/topics/templates.txt @@ -41,11 +41,6 @@ namespace. Support for template engines ============================ -.. versionadded:: 1.8 - - Support for multiple template engines and the :setting:`TEMPLATES` setting - were added in Django 1.8. - Configuration ------------- @@ -115,30 +110,12 @@ The ``django.template.loader`` module defines two functions to load templates. If you want to restrict the search to a particular template engine, pass the engine's :setting:`NAME <TEMPLATES-NAME>` in the ``using`` argument. - .. versionchanged:: 1.8 - - The ``using`` parameter was added. - - .. versionchanged:: 1.8 - - ``get_template()`` returns a backend-dependent ``Template`` instead - of a :class:`django.template.Template`. - .. function:: select_template(template_name_list, using=None) ``select_template()`` is just like ``get_template()``, except it takes a list of template names. It tries each name in order and returns the first template that exists. - .. versionchanged:: 1.8 - - The ``using`` parameter was added. - - .. versionchanged:: 1.8 - - ``select_template()`` returns a backend-dependent ``Template`` instead - of a :class:`django.template.Template`. - .. currentmodule:: django.template If loading a template fails, the following two exceptions, defined in @@ -279,10 +256,6 @@ templates, Django provides a shortcut function which automates the process. An optional :class:`~django.http.HttpRequest` that will be available during the template's rendering process. - .. versionadded:: 1.8 - - The ``request`` argument was added. - See also the :func:`~django.shortcuts.render()` and :func:`~django.shortcuts.render_to_response()` shortcuts, which call :func:`render_to_string()` and feed the result into an diff --git a/docs/topics/testing/advanced.txt b/docs/topics/testing/advanced.txt index f2a2b103fc..e230c2624d 100644 --- a/docs/topics/testing/advanced.txt +++ b/docs/topics/testing/advanced.txt @@ -415,10 +415,6 @@ execute and tear down the test suite. custom arguments by calling ``parser.add_argument()`` inside the method, so that the :djadmin:`test` command will be able to use those arguments. - .. versionchanged:: 1.8 - - The ``keepdb``, ``reverse``, and ``debug_sql`` arguments were added. - Attributes ~~~~~~~~~~ @@ -463,8 +459,6 @@ Methods .. classmethod:: DiscoverRunner.add_arguments(parser) - .. versionadded:: 1.8 - Override this class method to add custom arguments accepted by the :djadmin:`test` management command. See :py:meth:`argparse.ArgumentParser.add_argument()` for details about adding @@ -604,10 +598,6 @@ can be useful during testing. :setting:`NAME` in :setting:`DATABASES` to match the name of the test database. - .. versionchanged:: 1.8 - - The ``keepdb`` argument was added. - .. function:: destroy_test_db(old_database_name, verbosity=1, keepdb=False) Destroys the database whose name is the value of :setting:`NAME` in @@ -620,10 +610,6 @@ can be useful during testing. If the ``keepdb`` argument is ``True``, then the connection to the database will be closed, but the database will not be destroyed. - .. versionchanged:: 1.8 - - The ``keepdb`` argument was added. - .. _topics-testing-code-coverage: Integration with coverage.py diff --git a/docs/topics/testing/overview.txt b/docs/topics/testing/overview.txt index fc18eb0e4a..06e6172724 100644 --- a/docs/topics/testing/overview.txt +++ b/docs/topics/testing/overview.txt @@ -135,13 +135,10 @@ Tests that require a database (namely, model tests) will not use your "real" Regardless of whether the tests pass or fail, the test databases are destroyed when all the tests have been executed. -.. versionadded:: 1.8 - - You can prevent the test databases from being destroyed by adding the - :djadminopt:`--keepdb` flag to the test command. This will preserve the test - database between runs. If the database does not exist, it will first - be created. Any migrations will also be applied in order to keep it - up to date. +You can prevent the test databases from being destroyed by adding the +:djadminopt:`--keepdb` flag to the test command. This will preserve the test +database between runs. If the database does not exist, it will first be +created. Any migrations will also be applied in order to keep it p to date. By default the test databases get their names by prepending ``test_`` to the value of the :setting:`NAME` settings for the databases @@ -173,10 +170,6 @@ If using a SQLite in-memory database with Python 3.4+ and SQLite 3.7.13+, `shared cache <https://www.sqlite.org/sharedcache.html>`_ will be enabled, so you can write tests with ability to share the database between threads. -.. versionadded:: 1.8 - - The ability to use SQLite with a shared cache as described above was added. - .. admonition:: Finding data from your production database when running tests? If your code attempts to access the database when its modules are compiled, @@ -218,11 +211,9 @@ the Django test runner reorders tests in the following way: database by a given :class:`~django.test.TransactionTestCase` test, they must be updated to be able to run independently. -.. versionadded:: 1.8 - - You may reverse the execution order inside groups by passing - :djadminopt:`--reverse` to the test command. This can help with ensuring - your tests are independent from each other. +You may reverse the execution order inside groups by passing +:djadminopt:`--reverse` to the test command. This can help with ensuring your +tests are independent from each other. .. _test-case-serialized-rollback: diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt index 800f083765..0c97a67267 100644 --- a/docs/topics/testing/tools.txt +++ b/docs/topics/testing/tools.txt @@ -237,10 +237,6 @@ Use the ``django.test.Client`` class to make requests. You may also provide any file-like object (e.g., :class:`~io.StringIO` or :class:`~io.BytesIO`) as a file handle. - .. versionadded:: 1.8 - - The ability to use a file-like object was added. - Note that if you wish to use the same file handle for multiple ``post()`` calls then you will need to manually reset the file pointer between posts. The easiest way to do this is to @@ -321,8 +317,6 @@ Use the ``django.test.Client`` class to make requests. .. method:: Client.trace(path, follow=False, secure=False, **extra) - .. versionadded:: 1.8 - Makes a TRACE request on the provided ``path`` and returns a ``Response`` object. Useful for simulating diagnostic probes. @@ -496,8 +490,6 @@ Specifically, a ``Response`` object has the following attributes: .. attribute:: resolver_match - .. versionadded:: 1.8 - An instance of :class:`~django.core.urlresolvers.ResolverMatch` for the response. You can use the :attr:`~django.core.urlresolvers.ResolverMatch.func` attribute, for @@ -698,14 +690,6 @@ transaction, as is required when using :meth:`~django.db.models.query.QuerySet.select_for_update()`. In those cases, you should use ``TransactionTestCase``. -.. versionchanged:: 1.8 - - In older versions of Django, the effects of transaction commit and rollback - could not be tested within a ``TestCase``. With the completion of the - deprecation cycle of the old-style transaction management in Django 1.8, - transaction management commands (e.g. ``transaction.commit()``) are no - longer disabled within ``TestCase``. - ``TransactionTestCase`` and ``TestCase`` are identical except for the manner in which the database is reset to a known state and the ability for test code to test the effects of commit and rollback: @@ -759,8 +743,6 @@ additions, including: .. classmethod:: TestCase.setUpTestData() - .. versionadded:: 1.8 - The class-level ``atomic`` block described above allows the creation of initial data at the class level, once for the whole ``TestCase``. This technique allows for faster tests as compared to using ``setUp()``. @@ -1433,11 +1415,9 @@ your test suite. The name is a string such as ``'admin/index.html'``. - .. versionadded:: 1.8 - - The count argument is an integer indicating the number of times the - template should be rendered. Default is ``None``, meaning that the - template should be rendered one or more times. + The count argument is an integer indicating the number of times the + template should be rendered. Default is ``None``, meaning that the template + should be rendered one or more times. You can use this as a context manager, like this:: @@ -1562,8 +1542,6 @@ your test suite. .. method:: SimpleTestCase.assertJSONNotEqual(raw, expected_data, msg=None) - .. versionadded:: 1.8 - Asserts that the JSON fragments ``raw`` and ``expected_data`` are *not* equal. See :meth:`~SimpleTestCase.assertJSONEqual` for further details. @@ -1724,10 +1702,6 @@ it would under MySQL with MyISAM tables):: # ... conditional test code pass -.. versionchanged:: 1.8 - - ``skipIfDBFeature`` can accept multiple feature strings. - .. function:: skipUnlessDBFeature(*feature_name_strings) Skip the decorated test or ``TestCase`` if any of the named database features @@ -1742,7 +1716,3 @@ under MySQL with MyISAM tables):: def test_transaction_behavior(self): # ... conditional test code pass - -.. versionchanged:: 1.8 - - ``skipUnlessDBFeature`` can accept multiple feature strings. |
