=========================
Wagtail 2.3 release notes
=========================

.. contents::
    :local:
    :depth: 1


Wagtail 2.3 is designated a Long Term Support (LTS) release. Long Term Support releases will continue to receive maintenance updates as necessary to address security and data-loss related issues, up until the next LTS release (typically a period of 8 months).

Note that Wagtail 2.3 will be the last release branch to support Django 1.11.


What's new
==========

Added Django 2.1 support
~~~~~~~~~~~~~~~~~~~~~~~~

Wagtail is now compatible with Django 2.1.  Compatibility fixes were contributed by Ryan Verner and Matt Westcott.


Improved colour contrast
~~~~~~~~~~~~~~~~~~~~~~~~

Colour contrast within the admin interface has been improved, and now complies with WCAG 2 level AA. This was completed by Coen van der Kamp and Naomi Morduch Toubman based on earlier work from Edd Baldry, Naa Marteki Reed and Ben Enright.


Other features
~~~~~~~~~~~~~~

 * Added 'scale' image filter (Oliver Wilkerson)
 * Added meta tag to prevent search engines from indexing admin pages (Karl Hobley)
 * EmbedBlock now validates against recognised embed providers on save (Bertrand Bordage)
 * Made cache control headers on Wagtail admin consistent with Django admin (Tomasz Knapik)
 * Notification emails now include an "Auto-Submitted: auto-generated" header (Dan Braghis)
 * Image chooser panels now show alt text as title (Samir Shah)
 * Added ``download_url`` field to images in the API (Michael Harrison)
 * Dummy requests for preview now preserve the HTTP Authorization header (Ben Dickinson)


Bug fixes
~~~~~~~~~

 * Respect next param on login (Loic Teixeira)
 * InlinePanel now handles relations that specify a related_query_name (Aram Dulyan)
 * before_delete_page / after_delete_page hooks now run within the same database transaction as the page deletion (Tomasz Knapik)
 * Seek to the beginning of image files when uploading, to restore compatibility with django-storages Google Cloud and Azure backends (Mikalai Radchuk)
 * Snippet chooser modal no longer fails on snippet models with UUID primary keys (Sævar Öfjörð Magnússon)
 * Restored localisation in date/time pickers (David Moore, Thibaud Colas)
 * Tag input field no longer treats 'б' on Russian keyboards as a comma (Michael Borisov)
 * Disabled autocomplete dropdowns on date/time chooser fields (Janneke Janssen)
 * Split up ``wagtail.admin.forms`` to make it less prone to circular imports (Matt Westcott)
 * Disable linking to root page in rich text, making the page non-functional (Matt Westcott)
 * Pages should be editable and save-able even if there are broken page or document links in rich text (Matt Westcott)
 * Avoid redundant round-trips of JSON StreamField data on save, improving performance and preventing consistency issues on fixture loading (Andy Chosak, Matt Westcott)
 * Users are not logged out when changing their own password through the Users area (Matt Westcott)


Upgrade considerations
======================

``wagtail.admin.forms`` reorganised
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The ``wagtail.admin.forms`` module has been split up into submodules to make it less prone to producing circular imports, particularly when a custom user model is in use. The following (undocumented) definitions have now been moved to new locations:

+----------------------------------------------+---------------------------------------+
| Definition                                   | New location                          |
+==============================================+=======================================+
| LoginForm                                    | wagtail.admin.forms.auth              |
+----------------------------------------------+---------------------------------------+
| PasswordResetForm                            | wagtail.admin.forms.auth              |
+----------------------------------------------+---------------------------------------+
| URLOrAbsolutePathValidator                   | wagtail.admin.forms.choosers          |
+----------------------------------------------+---------------------------------------+
| URLOrAbsolutePathField                       | wagtail.admin.forms.choosers          |
+----------------------------------------------+---------------------------------------+
| ExternalLinkChooserForm                      | wagtail.admin.forms.choosers          |
+----------------------------------------------+---------------------------------------+
| EmailLinkChooserForm                         | wagtail.admin.forms.choosers          |
+----------------------------------------------+---------------------------------------+
| CollectionViewRestrictionForm                | wagtail.admin.forms.collections       |
+----------------------------------------------+---------------------------------------+
| CollectionForm                               | wagtail.admin.forms.collections       |
+----------------------------------------------+---------------------------------------+
| BaseCollectionMemberForm                     | wagtail.admin.forms.collections       |
+----------------------------------------------+---------------------------------------+
| BaseGroupCollectionMemberPermissionFormSet   | wagtail.admin.forms.collections       |
+----------------------------------------------+---------------------------------------+
| collection_member_permission_formset_factory | wagtail.admin.forms.collections       |
+----------------------------------------------+---------------------------------------+
| CopyForm                                     | wagtail.admin.forms.pages             |
+----------------------------------------------+---------------------------------------+
| PageViewRestrictionForm                      | wagtail.admin.forms.pages             |
+----------------------------------------------+---------------------------------------+
| SearchForm                                   | wagtail.admin.forms.search            |
+----------------------------------------------+---------------------------------------+
| BaseViewRestrictionForm                      | wagtail.admin.forms.view_restrictions |
+----------------------------------------------+---------------------------------------+

The following definitions remain in ``wagtail.admin.forms``: ``FORM_FIELD_OVERRIDES``, ``DIRECT_FORM_FIELD_OVERRIDES``, ``formfield_for_dbfield``, ``WagtailAdminModelFormMetaclass``, ``WagtailAdminModelForm`` and ``WagtailAdminPageForm``.
