Browse Source

Fix documentation indentation

Fix code block indentation in tutorial.rst

Prevent it from being displayed as a quote.

Fix indentation in pages.rst

Fix indentation in indexing.rst

Fix indentation in searching.rst

Fix indentation in backends.rst

Fix indentation in renditions.rst

Fix indentation in custom_image_model.rst

Fix indentation in feature_detection.rst

Fix indentation in image_serve_view.rst

Fix indentation in custom_document_model.rst

Fix indentation in i18n.rst

Fix indentation in privacy.rst

Fix indentation in page_editing_interface.rst

Fix indentation in rich_text_internals.rst

Fix indentation in extending_hallo.rst

Fix indentation in configuration.rst

Fix indentation in usage.rst

Fix indentation in theory.rst

Fix indentation in model_reference.rst

Fix indentation in queryset_reference.rst

Configure editors to indent .rst files with 2 spaces

In order for the documentation to be styled correctly, the generator
depends on indentation. Too much indentation can result in the content
being wrapped in a quote block, which looks bad.

Fix indentation in sitemaps.rst

Fix indentation in frontendcache.rst

Fix indentation in routablepage.rst

Fix indentation in table_block.rst

Fix routablepage.rst autodocs disppearing

Fix indentation in table_block.rst

Fix indentation in redirects.rst

Fix indentation in table_documentation-modes.rst

Fix indentation in browser_issues.rst

Fix indentation in release_process.rst

Fix indentation of release notes

One more indent fix in the release notes

Fix indentation warnings

Fix warning about undefined label in docs

Error during `make html`:

  wagtail/docs/releases/1.7.rst:25: WARNING: undefined label: jpeg_image_quality
Storm Heg 4 years ago
parent
commit
24ef0e62e6
100 changed files with 1495 additions and 1497 deletions
  1. 1 1
      .editorconfig
  2. 3 3
      docs/advanced_topics/api/v2/configuration.rst
  3. 17 17
      docs/advanced_topics/api/v2/usage.rst
  4. 5 5
      docs/advanced_topics/customisation/extending_hallo.rst
  5. 10 10
      docs/advanced_topics/customisation/page_editing_interface.rst
  6. 8 8
      docs/advanced_topics/customisation/rich_text_internals.rst
  7. 4 4
      docs/advanced_topics/documents/custom_document_model.rst
  8. 25 25
      docs/advanced_topics/i18n.rst
  9. 2 6
      docs/advanced_topics/images/custom_image_model.rst
  10. 4 4
      docs/advanced_topics/images/feature_detection.rst
  11. 1 1
      docs/advanced_topics/images/image_serve_view.rst
  12. 3 3
      docs/advanced_topics/images/renditions.rst
  13. 6 6
      docs/advanced_topics/privacy.rst
  14. 4 4
      docs/contributing/documentation-modes.rst
  15. 4 4
      docs/contributing/release_process.rst
  16. 4 4
      docs/editor_manual/browser_issues.rst
  17. 6 6
      docs/getting_started/tutorial.rst
  18. 7 7
      docs/reference/contrib/frontendcache.rst
  19. 14 14
      docs/reference/contrib/redirects.rst
  20. 16 16
      docs/reference/contrib/routablepage.rst
  21. 19 19
      docs/reference/contrib/sitemaps.rst
  22. 81 81
      docs/reference/contrib/table_block.rst
  23. 6 6
      docs/reference/management_commands.rst
  24. 6 6
      docs/reference/pages/model_reference.rst
  25. 10 10
      docs/reference/pages/queryset_reference.rst
  26. 7 7
      docs/reference/pages/theory.rst
  27. 2 2
      docs/releases/0.4.1.rst
  28. 43 41
      docs/releases/0.4.rst
  29. 23 23
      docs/releases/0.5.rst
  30. 12 12
      docs/releases/0.6.rst
  31. 19 19
      docs/releases/0.7.rst
  32. 1 1
      docs/releases/0.8.1.rst
  33. 3 3
      docs/releases/0.8.10.rst
  34. 13 13
      docs/releases/0.8.3.rst
  35. 5 5
      docs/releases/0.8.4.rst
  36. 12 12
      docs/releases/0.8.5.rst
  37. 4 4
      docs/releases/0.8.6.rst
  38. 24 24
      docs/releases/0.8.rst
  39. 48 48
      docs/releases/1.0.rst
  40. 42 42
      docs/releases/1.1.rst
  41. 2 2
      docs/releases/1.10.1.rst
  42. 55 55
      docs/releases/1.10.rst
  43. 1 1
      docs/releases/1.11.1.rst
  44. 35 35
      docs/releases/1.11.rst
  45. 3 3
      docs/releases/1.12.1.rst
  46. 4 4
      docs/releases/1.12.2.rst
  47. 7 7
      docs/releases/1.12.3.rst
  48. 4 4
      docs/releases/1.12.4.rst
  49. 2 2
      docs/releases/1.12.5.rst
  50. 1 1
      docs/releases/1.12.6.rst
  51. 23 23
      docs/releases/1.12.rst
  52. 7 7
      docs/releases/1.13.1.rst
  53. 4 4
      docs/releases/1.13.2.rst
  54. 2 2
      docs/releases/1.13.3.rst
  55. 1 1
      docs/releases/1.13.4.rst
  56. 26 26
      docs/releases/1.13.rst
  57. 39 39
      docs/releases/1.2.rst
  58. 42 42
      docs/releases/1.3.rst
  59. 1 1
      docs/releases/1.4.1.rst
  60. 5 5
      docs/releases/1.4.2.rst
  61. 1 1
      docs/releases/1.4.3.rst
  62. 11 11
      docs/releases/1.4.4.rst
  63. 9 9
      docs/releases/1.4.5.rst
  64. 1 1
      docs/releases/1.4.6.rst
  65. 38 38
      docs/releases/1.4.rst
  66. 10 10
      docs/releases/1.5.1.rst
  67. 1 1
      docs/releases/1.5.2.rst
  68. 1 1
      docs/releases/1.5.3.rst
  69. 46 46
      docs/releases/1.5.rst
  70. 39 39
      docs/releases/1.6.rst
  71. 42 42
      docs/releases/1.7.rst
  72. 1 1
      docs/releases/1.8.1.rst
  73. 3 3
      docs/releases/1.8.2.rst
  74. 35 35
      docs/releases/1.8.rst
  75. 2 2
      docs/releases/1.9.1.rst
  76. 14 14
      docs/releases/1.9.rst
  77. 7 7
      docs/releases/2.0.1.rst
  78. 3 3
      docs/releases/2.0.2.rst
  79. 123 123
      docs/releases/2.0.rst
  80. 3 3
      docs/releases/2.1.1.rst
  81. 2 2
      docs/releases/2.1.2.rst
  82. 1 1
      docs/releases/2.1.3.rst
  83. 52 52
      docs/releases/2.1.rst
  84. 6 6
      docs/releases/2.10.1.rst
  85. 5 5
      docs/releases/2.10.2.rst
  86. 70 70
      docs/releases/2.10.rst
  87. 3 3
      docs/releases/2.11.1.rst
  88. 6 6
      docs/releases/2.11.2.rst
  89. 4 4
      docs/releases/2.11.3.rst
  90. 3 3
      docs/releases/2.11.4.rst
  91. 50 50
      docs/releases/2.11.rst
  92. 5 5
      docs/releases/2.12.1.rst
  93. 15 15
      docs/releases/2.12.rst
  94. 6 6
      docs/releases/2.13.rst
  95. 2 2
      docs/releases/2.2.1.rst
  96. 2 2
      docs/releases/2.2.2.rst
  97. 29 29
      docs/releases/2.2.rst
  98. 21 21
      docs/releases/2.3.rst
  99. 34 34
      docs/releases/2.4.rst
  100. 1 1
      docs/releases/2.5.1.rst

+ 1 - 1
.editorconfig

@@ -14,7 +14,7 @@ charset = utf-8
 [*.{css,py,scss,rst,md}]
 indent_size = 4
 
-[*.{js,json,yml}]
+[*.{js,json,yml,rst}]
 indent_size = 2
 
 [*.md]

+ 3 - 3
docs/advanced_topics/api/v2/configuration.rst

@@ -45,9 +45,9 @@ can hook into the rest of your project.
 
 Wagtail provides three endpoint classes you can use:
 
- - Pages :class:`wagtail.api.v2.views.PagesAPIViewSet`
- - Images :class:`wagtail.images.api.v2.views.ImagesAPIViewSet`
- - Documents :class:`wagtail.documents.api.v2.views.DocumentsAPIViewSet`
+- Pages :class:`wagtail.api.v2.views.PagesAPIViewSet`
+- Images :class:`wagtail.images.api.v2.views.ImagesAPIViewSet`
+- Documents :class:`wagtail.documents.api.v2.views.DocumentsAPIViewSet`
 
 You can subclass any of these endpoint classes to customise their functionality.
 Additionally, there is a base endpoint class you can use for adding different

+ 17 - 17
docs/advanced_topics/api/v2/usage.rst

@@ -17,9 +17,9 @@ Fetching content
 To fetch content over the API, perform a ``GET`` request against one of the
 following endpoints:
 
- - Pages ``/api/v2/pages/``
- - Images ``/api/v2/images/``
- - Documents ``/api/v2/documents/``
+- Pages ``/api/v2/pages/``
+- Images ``/api/v2/images/``
+- Documents ``/api/v2/documents/``
 
 .. note::
 
@@ -342,9 +342,9 @@ Search operator
 The ``search_operator`` specifies how multiple terms in the query should be
 handled. There are two possible values:
 
- - ``and`` - All terms in the search query (excluding stop words) must exist in
-   each result
- - ``or`` - At least one term in the search query must exist in each result
+- ``and`` - All terms in the search query (excluding stop words) must exist in
+  each result
+- ``or`` - At least one term in the search query must exist in each result
 
 The ``or`` operator is generally better than ``and`` as it allows the user to be
 inexact with their query and the ranking algorithm will make sure that
@@ -617,22 +617,22 @@ Changes since v1
 Breaking changes
 ----------------
 
- - The results list in listing responses has been renamed to ``items`` (was
-   previously either ``pages``, ``images`` or ``documents``)
+- The results list in listing responses has been renamed to ``items`` (was
+  previously either ``pages``, ``images`` or ``documents``)
 
 Major features
 --------------
 
- - The ``fields`` parameter has been improved to allow removing fields, adding
-   all fields and customising nested fields
+- The ``fields`` parameter has been improved to allow removing fields, adding
+  all fields and customising nested fields
 
 Minor features
 --------------
 
- - ``html_url``, ``slug``, ``first_published_at``, ``expires_at`` and
-   ``show_in_menus`` fields have been added to the pages endpoint
- - ``download_url`` field has been added to the documents endpoint
- - Multiple page types can be specified in ``type`` parameter on pages endpoint
- - ``true`` and ``false`` may now be used when filtering boolean fields
- - ``order`` can now be used in conjunction with ``search``
- - ``search_operator`` parameter was added
+- ``html_url``, ``slug``, ``first_published_at``, ``expires_at`` and
+  ``show_in_menus`` fields have been added to the pages endpoint
+- ``download_url`` field has been added to the documents endpoint
+- Multiple page types can be specified in ``type`` parameter on pages endpoint
+- ``true`` and ``false`` may now be used when filtering boolean fields
+- ``order`` can now be used in conjunction with ``search``
+- ``search_operator`` parameter was added

+ 5 - 5
docs/advanced_topics/customisation/extending_hallo.rst

@@ -39,11 +39,11 @@ A plugin ``halloblockquote``, implemented in ``myapp/js/hallo-blockquote.js``, t
 
 The constructor for ``HalloPlugin`` accepts the following keyword arguments:
 
- * ``name`` - the plugin name as defined in the JavaScript code. ``hallo.js`` plugin names are prefixed with the ``"IKS."`` namespace, but the name passed here should be without the prefix.
- * ``options`` - a dictionary (or other JSON-serialisable object) of options to be passed to the JavaScript plugin code on initialisation
- * ``js`` - a list of JavaScript files to be imported for this plugin, defined in the same way as a :doc:`Django form media <django:topics/forms/media>` definition
- * ``css`` - a dictionary of CSS files to be imported for this plugin, defined in the same way as a :doc:`Django form media <django:topics/forms/media>` definition
- * ``order`` - an index number (default 100) specifying the order in which plugins should be listed, which in turn determines the order buttons will appear in the toolbar
+* ``name`` - the plugin name as defined in the JavaScript code. ``hallo.js`` plugin names are prefixed with the ``"IKS."`` namespace, but the name passed here should be without the prefix.
+* ``options`` - a dictionary (or other JSON-serialisable object) of options to be passed to the JavaScript plugin code on initialisation
+* ``js`` - a list of JavaScript files to be imported for this plugin, defined in the same way as a :doc:`Django form media <django:topics/forms/media>` definition
+* ``css`` - a dictionary of CSS files to be imported for this plugin, defined in the same way as a :doc:`Django form media <django:topics/forms/media>` definition
+* ``order`` - an index number (default 100) specifying the order in which plugins should be listed, which in turn determines the order buttons will appear in the toolbar
 
 When writing the front-end code for the plugin, Wagtail’s Hallo implementation offers two extension points:
 

+ 10 - 10
docs/advanced_topics/customisation/page_editing_interface.rst

@@ -65,8 +65,8 @@ Limiting features in a rich text field
 
 By default, the rich text editor provides users with a wide variety of options for text formatting and inserting embedded content such as images. However, we may wish to restrict a rich text field to a more limited set of features - for example:
 
- * The field might be intended for a short text snippet, such as a summary to be pulled out on index pages, where embedded images or videos would be inappropriate;
- * When page content is defined using :ref:`StreamField <streamfield>`, elements such as headings, images and videos are usually given their own block types, alongside a rich text block type used for ordinary paragraph text; in this case, allowing headings and images to also exist within the rich text content is redundant (and liable to result in inconsistent designs).
+* The field might be intended for a short text snippet, such as a summary to be pulled out on index pages, where embedded images or videos would be inappropriate;
+* When page content is defined using :ref:`StreamField <streamfield>`, elements such as headings, images and videos are usually given their own block types, alongside a rich text block type used for ordinary paragraph text; in this case, allowing headings and images to also exist within the rich text content is redundant (and liable to result in inconsistent designs).
 
 This can be achieved by passing a ``features`` keyword argument to ``RichTextField``, with a list of identifiers for the features you wish to allow:
 
@@ -76,14 +76,14 @@ This can be achieved by passing a ``features`` keyword argument to ``RichTextFie
 
 The feature identifiers provided on a default Wagtail installation are as follows:
 
- * ``h1``, ``h2``, ``h3``, ``h4``, ``h5``, ``h6`` - heading elements
- * ``bold``, ``italic`` - bold / italic text
- * ``ol``, ``ul`` - ordered / unordered lists
- * ``hr`` - horizontal rules
- * ``link`` - page, external and email links
- * ``document-link`` - links to documents
- * ``image`` - embedded images
- * ``embed`` - embedded media (see :ref:`embedded_content`)
+* ``h1``, ``h2``, ``h3``, ``h4``, ``h5``, ``h6`` - heading elements
+* ``bold``, ``italic`` - bold / italic text
+* ``ol``, ``ul`` - ordered / unordered lists
+* ``hr`` - horizontal rules
+* ``link`` - page, external and email links
+* ``document-link`` - links to documents
+* ``image`` - embedded images
+* ``embed`` - embedded media (see :ref:`embedded_content`)
 
 
 We have few additional feature identifiers as well. They are not enabled by default, but you can use them in your list of identifiers. These are as follows:

+ 8 - 8
docs/advanced_topics/customisation/rich_text_internals.rst

@@ -3,10 +3,10 @@ Rich text internals
 
 At first glance, Wagtail's rich text capabilities appear to give editors direct control over a block of HTML content. In reality, it's necessary to give editors a representation of rich text content that is several steps removed from the final HTML output, for several reasons:
 
- * The editor interface needs to filter out certain kinds of unwanted markup; this includes malicious scripting, font styles pasted from an external word processor, and elements which would break the validity or consistency of the site design (for example, pages will generally reserve the ``<h1>`` element for the page title, and so it would be inappropriate to allow users to insert their own additional ``<h1>`` elements through rich text).
- * Rich text fields can specify a ``features`` argument to further restrict the elements permitted in the field - see :ref:`rich_text_features`.
- * Enforcing a subset of HTML helps to keep presentational markup out of the database, making the site more maintainable, and making it easier to repurpose site content (including, potentially, producing non-HTML output such as `LaTeX <https://www.latex-project.org/>`_).
- * Elements such as page links and images need to preserve metadata such as the page or image ID, which is not present in the final HTML representation.
+* The editor interface needs to filter out certain kinds of unwanted markup; this includes malicious scripting, font styles pasted from an external word processor, and elements which would break the validity or consistency of the site design (for example, pages will generally reserve the ``<h1>`` element for the page title, and so it would be inappropriate to allow users to insert their own additional ``<h1>`` elements through rich text).
+* Rich text fields can specify a ``features`` argument to further restrict the elements permitted in the field - see :ref:`rich_text_features`.
+* Enforcing a subset of HTML helps to keep presentational markup out of the database, making the site more maintainable, and making it easier to repurpose site content (including, potentially, producing non-HTML output such as `LaTeX <https://www.latex-project.org/>`_).
+* Elements such as page links and images need to preserve metadata such as the page or image ID, which is not present in the final HTML representation.
 
 This requires the rich text content to go through a number of validation and conversion steps; both between the editor interface and the version stored in the database, and from the database representation to the final rendered HTML.
 
@@ -48,10 +48,10 @@ Again, the ``embedtype`` attribute identifies a rule that shall be used to rewri
 
 A number of additional constraints apply to ``<a linktype="...">`` and ``<embed embedtype="..." />`` tags, to allow the conversion to be performed efficiently via string replacement:
 
- * The tag name and attributes must be lower-case
- * Attribute values must be quoted with double-quotes
- * ``embed`` elements must use XML self-closing tag syntax (i.e. end in ``/>`` instead of a closing ``</embed>`` tag)
- * The only HTML entities permitted in attribute values are ``&lt;``, ``&gt;``, ``&amp;`` and ``&quot;``
+* The tag name and attributes must be lower-case
+* Attribute values must be quoted with double-quotes
+* ``embed`` elements must use XML self-closing tag syntax (i.e. end in ``/>`` instead of a closing ``</embed>`` tag)
+* The only HTML entities permitted in attribute values are ``&lt;``, ``&gt;``, ``&amp;`` and ``&quot;``
 
 
 The feature registry

+ 4 - 4
docs/advanced_topics/documents/custom_document_model.rst

@@ -9,10 +9,10 @@ additional fields.
 
 You need to complete the following steps in your project to do this:
 
- - Create a new document model that inherits from
-   ``wagtail.documents.models.AbstractDocument``. This is where you would
-   add additional fields.
- - Point ``WAGTAILDOCS_DOCUMENT_MODEL`` to the new model.
+- Create a new document model that inherits from
+  ``wagtail.documents.models.AbstractDocument``. This is where you would
+  add additional fields.
+- Point ``WAGTAILDOCS_DOCUMENT_MODEL`` to the new model.
 
 Here's an example:
 

+ 25 - 25
docs/advanced_topics/i18n.rst

@@ -39,11 +39,11 @@ If you're in a hurry, you can skip to `Configuration`_.
 
 In summary:
 
- - Wagtail stores content in a separate page tree for each locale
- - It has a built-in ``Locale`` model and all pages are linked to a ``Locale`` with the ``locale`` foreign key field
- - It records which pages are translations of each other using a shared UUID stored in the ``translation_key`` field
- - It automatically routes requests through translations of the site's homepage
- - It uses Django's ``i18n_patterns`` and ``LocaleMiddleware`` for language detection
+- Wagtail stores content in a separate page tree for each locale
+- It has a built-in ``Locale`` model and all pages are linked to a ``Locale`` with the ``locale`` foreign key field
+- It records which pages are translations of each other using a shared UUID stored in the ``translation_key`` field
+- It automatically routes requests through translations of the site's homepage
+- It uses Django's ``i18n_patterns`` and ``LocaleMiddleware`` for language detection
 
 Page structure
 ^^^^^^^^^^^^^^
@@ -55,11 +55,11 @@ homepages at the top level of the page hierarchy in the explorer.
 
 This approach has some advantages for the editor experience as well:
 
- - There is no default language for editing, so content can be authored in any
-   language and then translated to any other.
- - Translations of a page are separate pages so they can be published at
-   different times.
- - Editors can be given permission to edit content in one locale and not others.
+- There is no default language for editing, so content can be authored in any
+  language and then translated to any other.
+- Translations of a page are separate pages so they can be published at
+  different times.
+- Editors can be given permission to edit content in one locale and not others.
 
 How locales and translations are recorded in the database
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -67,9 +67,9 @@ How locales and translations are recorded in the database
 All pages (and any snippets that have translation enabled) have a ``locale`` and
 ``translation_key`` field:
 
- - ``locale`` is a foreign key to the ``Locale`` model
- - ``translation_key`` is a UUID that's used to find translations of a piece of content.
-   Translations of the same page/snippet share the same value in this field
+- ``locale`` is a foreign key to the ``Locale`` model
+- ``translation_key`` is a UUID that's used to find translations of a piece of content.
+  Translations of the same page/snippet share the same value in this field
 
 These two fields have a 'unique together' constraint so you can't have more than
 one translation in the same locale.
@@ -112,15 +112,15 @@ The locale records can be set up with an :ref:`optional management UI <enabling_
 in the shell. The possible values of the ``language_code`` field are controlled
 by the ``WAGTAIL_CONTENT_LANGUAGES`` setting.
 
- .. note:: Read this if you've changed ``LANGUAGE_CODE`` before enabling internationalisation
+.. note:: Read this if you've changed ``LANGUAGE_CODE`` before enabling internationalisation
 
-    On initial migration, Wagtail creates a ``Locale`` record for the language that
-    was set in the ``LANGUAGE_CODE`` setting at the time the migration was run. All
-    pages will be assigned to this ``Locale`` when Wagtail's internationalisation is disabled.
+  On initial migration, Wagtail creates a ``Locale`` record for the language that
+  was set in the ``LANGUAGE_CODE`` setting at the time the migration was run. All
+  pages will be assigned to this ``Locale`` when Wagtail's internationalisation is disabled.
 
-    If you have changed the ``LANGUAGE_CODE`` setting since updating to Wagtail 2.11,
-    you will need to manually update the record in the ``Locale`` model too before
-    enabling internationalisation, as your existing content will be assigned to the old code.
+  If you have changed the ``LANGUAGE_CODE`` setting since updating to Wagtail 2.11,
+  you will need to manually update the record in the ``Locale`` model too before
+  enabling internationalisation, as your existing content will be assigned to the old code.
 
 Configuration
 -------------
@@ -162,9 +162,9 @@ Configuring available languages
 Next we need to configure the available languages. There are two settings
 for this that are each used for different purposes:
 
- - ``LANGUAGES`` - This sets which languages are available on the frontend of the site.
- - ``WAGTAIL_CONTENT_LANGUAGES`` - This sets which the languages Wagtail content
-   can be authored in.
+- ``LANGUAGES`` - This sets which languages are available on the frontend of the site.
+- ``WAGTAIL_CONTENT_LANGUAGES`` - This sets which the languages Wagtail content
+  can be authored in.
 
 You can set both of these settings to the exact same value. For example, to
 enable English, French, and Spanish:
@@ -663,7 +663,7 @@ Changing the primary language of your Wagtail installation
 
 The default language of Wagtail is ``en-us`` (American English). You can change this by tweaking a couple of Django settings:
 
- - Make sure `USE_I18N <https://docs.djangoproject.com/en/stable/ref/settings/#use-i18n>`_ is set to ``True``
- - Set `LANGUAGE_CODE <https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-LANGUAGE_CODE>`_ to your websites' primary language
+- Make sure `USE_I18N <https://docs.djangoproject.com/en/stable/ref/settings/#use-i18n>`_ is set to ``True``
+- Set `LANGUAGE_CODE <https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-LANGUAGE_CODE>`_ to your websites' primary language
 
 If there is a translation available for your language, the Wagtail admin backend should now be in the language you've chosen.

+ 2 - 6
docs/advanced_topics/images/custom_image_model.rst

@@ -9,12 +9,8 @@ to images.
 
 To do this, you need to add two models to your project:
 
- - The image model itself that inherits from
-   ``wagtail.images.models.AbstractImage``. This is where you would add
-   your additional fields
- - The renditions model that inherits from
-   ``wagtail.images.models.AbstractRendition``. This is used to store
-   renditions for the new model.
+- The image model itself that inherits from ``wagtail.images.models.AbstractImage``. This is where you would add your additional fields
+- The renditions model that inherits from ``wagtail.images.models.AbstractRendition``. This is used to store renditions for the new model.
 
 Here's an example:
 

+ 4 - 4
docs/advanced_topics/images/feature_detection.rst

@@ -78,7 +78,7 @@ Rustface
 
 Rustface_ is Python library with prebuilt wheel files provided for Linux and macOS. Although implemented in Rust it is pip-installable:
 
- .. code-block:: console
+.. code-block:: console
 
     $ pip install wheel
     $ pip install rustface
@@ -91,7 +91,7 @@ Rustface provides a plug-in that needs to be registered with Willow_.
 
 This should be done somewhere that gets run on application startup:
 
- .. code-block:: python
+.. code-block:: python
 
     from willow.registry import registry
     import rustface.willow
@@ -123,7 +123,7 @@ Switching on feature detection in Wagtail
 
 Once installed, you need to set the ``WAGTAILIMAGES_FEATURE_DETECTION_ENABLED`` setting to ``True`` to automatically detect faces/features whenever a new image is uploaded in to Wagtail or when an image without a focal point is saved (this is done via a pre-save signal handler):
 
- .. code-block:: python
+.. code-block:: python
 
     # settings.py
 
@@ -137,7 +137,7 @@ If you already have images in your Wagtail site and would like to run feature de
 
 For example, you can manually run feature detection on all images by running the following code in the python shell:
 
- .. code-block:: python
+.. code-block:: python
 
     from wagtail.images import get_image_model
 

+ 1 - 1
docs/advanced_topics/images/image_serve_view.rst

@@ -21,7 +21,7 @@ Setup
 
 Add an entry for the view into your URLs configuration:
 
- .. code-block:: python
+.. code-block:: python
 
     from wagtail.images.views.serve import ServeView
 

+ 3 - 3
docs/advanced_topics/images/renditions.rst

@@ -8,7 +8,7 @@ and are stored as new image files in the site's ``[media]/images`` directory on
 
 Image renditions can also be generated dynamically from Python via the native ``get_rendition()`` method, for example:
 
- .. code-block:: python
+.. code-block:: python
 
     newimage = myimage.get_rendition('fill-300x150|jpegquality-60')
 
@@ -19,14 +19,14 @@ Argument options are identical to the ``{% image %}`` template tag's filter spec
 The generated ``Rendition`` object will have properties specific to that version of the image, such as
 ``url``, ``width`` and ``height``, so something like this could be used in an API generator, for example:
 
- .. code-block:: python
+.. code-block:: python
 
     url = myimage.get_rendition('fill-300x186|jpegquality-60').url
 
 Properties belonging to the original image from which the generated Rendition was created, such as ``title``, can
 be accessed through the Rendition's ``image`` property:
 
- .. code-block:: python
+.. code-block:: python
 
     >>> newimage.image.title
     'Blue Sky'

+ 6 - 6
docs/advanced_topics/privacy.rst

@@ -5,9 +5,9 @@ Private pages
 
 Users with publish permission on a page can set it to be private by clicking the 'Privacy' control in the top right corner of the page explorer or editing interface. This sets a restriction on who is allowed to view the page and its sub-pages. Several different kinds of restriction are available:
 
- * **Accessible to logged-in users:** The user must log in to view the page. All user accounts are granted access, regardless of permission level.
- * **Accessible with the following password:** The user must enter the given password to view the page. This is appropriate for situations where you want to share a page with a trusted group of people, but giving them individual user accounts would be overkill. The same password is shared between all users, and this works independently of any user accounts that exist on the site.
- * **Accessible to users in specific groups:** The user must be logged in, and a member of one or more of the specified groups, in order to view the page.
+* **Accessible to logged-in users:** The user must log in to view the page. All user accounts are granted access, regardless of permission level.
+* **Accessible with the following password:** The user must enter the given password to view the page. This is appropriate for situations where you want to share a page with a trusted group of people, but giving them individual user accounts would be overkill. The same password is shared between all users, and this works independently of any user accounts that exist on the site.
+* **Accessible to users in specific groups:** The user must be logged in, and a member of one or more of the specified groups, in order to view the page.
 
 Similarly, documents can be made private by placing them in a collection with appropriate privacy settings (see :ref:`image_document_permissions`).
 
@@ -46,8 +46,8 @@ By setting ``PASSWORD_REQUIRED_TEMPLATE`` in your Django settings file, you can
 
 This template will receive the same set of context variables that the blocked page would pass to its own template via ``get_context()`` - including ``page`` to refer to the page object itself - plus the following additional variables (which override any of the page's own context variables of the same name):
 
- - **form** - A Django form object for the password prompt; this will contain a field named ``password`` as its only visible field. A number of hidden fields may also be present, so the page must loop over ``form.hidden_fields`` if not using one of Django's rendering helpers such as ``form.as_p``.
- - **action_url** - The URL that the password form should be submitted to, as a POST request.
+- **form** - A Django form object for the password prompt; this will contain a field named ``password`` as its only visible field. A number of hidden fields may also be present, so the page must loop over ``form.hidden_fields`` if not using one of Django's rendering helpers such as ``form.as_p``.
+- **action_url** - The URL that the password form should be submitted to, as a POST request.
 
 A basic template suitable for use as ``PASSWORD_REQUIRED_TEMPLATE`` might look like this:
 
@@ -89,7 +89,7 @@ Setting a "password required" page for a specific page type
 
 The attribute ``password_required_template`` can be defined on a page model to use a custom template for the "password required" view, for that page type only. For example, if a site had a page type for displaying embedded videos along with a description, it might choose to use a custom "password required" template that displays the video description as usual, but shows the password form in place of the video embed.
 
- .. code-block:: python
+.. code-block:: python
 
     class VideoPage(Page):
         ...

+ 4 - 4
docs/contributing/documentation-modes.rst

@@ -6,10 +6,10 @@ Writing documentation
 Wagtail documentation is written in **four modes** of information delivery.
 Each type of information delivery has a purpose and targets a specific audience.
 
-  * :ref:`doc-mode-tutorial`, learning-oriented
-  * :ref:`doc-mode-how-to-guide`, goal-oriented
-  * :ref:`doc-mode-reference`, information-oriented
-  * :ref:`doc-mode-explanation`, understanding-oriented
+* :ref:`doc-mode-tutorial`, learning-oriented
+* :ref:`doc-mode-how-to-guide`, goal-oriented
+* :ref:`doc-mode-reference`, information-oriented
+* :ref:`doc-mode-explanation`, understanding-oriented
 
 We are following `Daniele Procida's documention system <https://documentation.divio.com/>`__.
 

+ 4 - 4
docs/contributing/release_process.rst

@@ -146,10 +146,10 @@ all following versions of Django.
 For example, consider a moment in time before release of Wagtail 1.5
 and after the following releases:
 
- * Django 1.8 (LTS)
- * Django 1.9
- * Wagtail 1.4 (LTS) - Released before Django 1.10 and supports Django 1.8 and 1.9
- * Django 1.10
+* Django 1.8 (LTS)
+* Django 1.9
+* Wagtail 1.4 (LTS) - Released before Django 1.10 and supports Django 1.8 and 1.9
+* Django 1.10
 
 Wagtail 1.5 will support Django 1.8 (LTS), 1.9, 1.10.
 Wagtail 1.4 will still support only Django 1.8 (LTS) and 1.9.

+ 4 - 4
docs/editor_manual/browser_issues.rst

@@ -17,10 +17,10 @@ ____
 
 Wagtail is gradually removing support for the legacy Internet Explorer browser over the course of `future releases <https://github.com/wagtail/wagtail/wiki/Release-schedule>`_.
 
- * In Wagtail 2.11 (LTS), there will be a warning message displayed on the Wagtail dashboard for IE11 users with administrator role.
- * In Wagtail 2.12, the message will be displayed to all users regardless of their role.
- * In Wagtail 2.13, the message will be displayed at the top of all pages.
- * Wagtail will no longer support IE11 starting in version 2.14.
+* In Wagtail 2.11 (LTS), there will be a warning message displayed on the Wagtail dashboard for IE11 users with administrator role.
+* In Wagtail 2.12, the message will be displayed to all users regardless of their role.
+* In Wagtail 2.13, the message will be displayed at the top of all pages.
+* Wagtail will no longer support IE11 starting in version 2.14.
 
 If this affects you or your organisation, consider which alternative browsers you may be able to use.
 Wagtail is fully compatible with Microsoft Edge, Microsoft’s replacement for Internet Explorer. You may consider using its `IE mode <https://docs.microsoft.com/en-us/deployedge/edge-ie-mode>`_ to keep access to IE11-only sites, while other sites and apps like Wagtail can leverage modern browser capabilities.

+ 6 - 6
docs/getting_started/tutorial.rst

@@ -35,17 +35,17 @@ This tutorial uses `venv <https://docs.python.org/3/tutorial/venv.html>`_, which
 
 **On Windows** (cmd.exe):
 
-    .. code-block:: bat
+.. code-block:: bat
 
-       $ python3 -m venv mysite\env
-       $ mysite\env\Scripts\activate.bat
+    $ python3 -m venv mysite\env
+    $ mysite\env\Scripts\activate.bat
 
 **On Unix or MacOS** (bash):
 
-    .. code-block:: console
+.. code-block:: console
 
-       $ python3 -m venv mysite/env
-       $ source mysite/env/bin/activate
+    $ python3 -m venv mysite/env
+    $ source mysite/env/bin/activate
 
 **For other shells** see the `venv documentation <https://docs.python.org/3/library/venv.html>`_.
 

+ 7 - 7
docs/reference/contrib/frontendcache.rst

@@ -13,13 +13,13 @@ Setting it up
 
 Firstly, add ``"wagtail.contrib.frontend_cache"`` to your INSTALLED_APPS:
 
- .. code-block:: python
+.. code-block:: python
 
-     INSTALLED_APPS = [
-        ...
+    INSTALLED_APPS = [
+      ...
 
-        "wagtail.contrib.frontend_cache"
-     ]
+      "wagtail.contrib.frontend_cache"
+    ]
 
 The ``wagtailfrontendcache`` module provides a set of signal handlers which will automatically purge the cache whenever a page is published or deleted. These signal handlers are automatically registered when the ``wagtail.contrib.frontend_cache`` app is loaded.
 
@@ -46,8 +46,8 @@ Set ``WAGTAILFRONTENDCACHE_LANGUAGES`` to a list of languages (typically equal t
 
 Finally, make sure you have configured your frontend cache to accept PURGE requests:
 
- - `Varnish <https://www.varnish-cache.org/docs/3.0/tutorial/purging.html>`_
- - `Squid <https://wiki.squid-cache.org/SquidFaq/OperatingSquid#How_can_I_purge_an_object_from_my_cache.3F>`_
+- `Varnish <https://www.varnish-cache.org/docs/3.0/tutorial/purging.html>`_
+- `Squid <https://wiki.squid-cache.org/SquidFaq/OperatingSquid#How_can_I_purge_an_object_from_my_cache.3F>`_
 
 
 .. _frontendcache_cloudflare:

+ 14 - 14
docs/reference/contrib/redirects.rst

@@ -55,26 +55,26 @@ This command imports and creates redirects from a file supplied by the user.
 
 Options:
 
- - **src**
-   This is the path to the file you wish to import redirects from.
+- **src**
+  This is the path to the file you wish to import redirects from.
 
- - **site**
-   This is the **site** for the site you wish to save redirects to.
+- **site**
+  This is the **site** for the site you wish to save redirects to.
 
- - **permanent**
-   If the redirects imported should be **permanent** (True) or not (False). It's True by default.
+- **permanent**
+  If the redirects imported should be **permanent** (True) or not (False). It's True by default.
 
- - **from**
-   The column index you want to use as redirect from value.
+- **from**
+  The column index you want to use as redirect from value.
 
- - **to**
-   The column index you want to use as redirect to value.
+- **to**
+  The column index you want to use as redirect to value.
 
- - **dry_run**
-   Lets you run a import without doing any changes.
+- **dry_run**
+  Lets you run a import without doing any changes.
 
- - **ask**
-   Lets you inspect and approve each redirect before it is created.
+- **ask**
+  Lets you inspect and approve each redirect before it is created.
 
 
 

+ 16 - 16
docs/reference/contrib/routablepage.rst

@@ -18,13 +18,13 @@ Installation
 
 Add ``"wagtail.contrib.routable_page"`` to your INSTALLED_APPS:
 
- .. code-block:: python
+.. code-block:: python
 
-     INSTALLED_APPS = [
-        ...
+    INSTALLED_APPS = [
+      ...
 
-        "wagtail.contrib.routable_page",
-     ]
+      "wagtail.contrib.routable_page",
+    ]
 
 
 The basics
@@ -183,26 +183,26 @@ The ``RoutablePageMixin`` class
 .. automodule:: wagtail.contrib.routable_page.models
 .. autoclass:: RoutablePageMixin
 
-    .. automethod:: render
+  .. automethod:: render
 
-    .. automethod:: get_subpage_urls
+  .. automethod:: get_subpage_urls
 
-    .. automethod:: resolve_subpage
+  .. automethod:: resolve_subpage
 
-        Example:
+    Example:
 
-        .. code-block:: python
+    .. code-block:: python
 
-            view, args, kwargs = page.resolve_subpage('/past/')
-            response = view(request, *args, **kwargs)
+        view, args, kwargs = page.resolve_subpage('/past/')
+        response = view(request, *args, **kwargs)
 
-    .. automethod:: reverse_subpage
+  .. automethod:: reverse_subpage
 
-        Example:
+    Example:
 
-        .. code-block:: python
+    .. code-block:: python
 
-            url = page.url + page.reverse_subpage('events_for_year', kwargs={'year': '2014'})
+        url = page.url + page.reverse_subpage('events_for_year', kwargs={'year': '2014'})
 
 
  .. _routablepageurl_template_tag:

+ 19 - 19
docs/reference/contrib/sitemaps.rst

@@ -27,13 +27,13 @@ Basic configuration
 You firstly need to add ``"django.contrib.sitemaps"`` to INSTALLED_APPS in your
 Django settings file:
 
- .. code-block:: python
+.. code-block:: python
 
-    INSTALLED_APPS = [
-        ...
+  INSTALLED_APPS = [
+      ...
 
-        "django.contrib.sitemaps",
-    ]
+      "django.contrib.sitemaps",
+  ]
 
 
 Then, in ``urls.py``, you need to add a link to the
@@ -68,24 +68,24 @@ By default, the sitemap uses the hostname defined in the Wagtail Admin's
 ``Sites`` area. If your default site is called ``localhost``, then URLs in the
 sitemap will look like:
 
- .. code-block:: xml
+.. code-block:: xml
 
-    <url>
-        <loc>http://localhost/about/</loc>
-        <lastmod>2015-09-26</lastmod>
-    </url>
+  <url>
+      <loc>http://localhost/about/</loc>
+      <lastmod>2015-09-26</lastmod>
+  </url>
 
 
 For tools like Google Search Tools to properly index your site, you need to set
 a valid, crawlable hostname. If you change the site's hostname from
 ``localhost`` to ``mysite.com``, ``sitemap.xml`` will contain the correct URLs:
 
- .. code-block:: xml
+.. code-block:: xml
 
-    <url>
-        <loc>http://mysite.com/about/</loc>
-        <lastmod>2015-09-26</lastmod>
-    </url>
+  <url>
+      <loc>http://mysite.com/about/</loc>
+      <lastmod>2015-09-26</lastmod>
+  </url>
 
 
 If you change the site's port to ``443``, the ``https`` scheme will be used.
@@ -106,10 +106,10 @@ empty list.
 
 Each dictionary can contain the following:
 
- - **location** (required) - This is the full URL path to add into the sitemap.
- - **lastmod** - A python date or datetime set to when the page was last modified.
- - **changefreq**
- - **priority**
+- **location** (required) - This is the full URL path to add into the sitemap.
+- **lastmod** - A python date or datetime set to when the page was last modified.
+- **changefreq**
+- **priority**
 
 You can add more but you will need to override the
 ``sitemap.xml`` template in order for them to be displayed in the sitemap.

+ 81 - 81
docs/reference/contrib/table_block.rst

@@ -12,13 +12,13 @@ Installation
 
 Add ``"wagtail.contrib.table_block"`` to your INSTALLED_APPS:
 
- .. code-block:: python
+.. code-block:: python
 
-     INSTALLED_APPS = [
-        ...
+    INSTALLED_APPS = [
+      ...
 
-        "wagtail.contrib.table_block",
-     ]
+      "wagtail.contrib.table_block",
+    ]
 
 
 Basic Usage
@@ -28,11 +28,11 @@ After installation, the TableBlock module can be used in a similar fashion to ot
 
 Import the TableBlock ``from wagtail.contrib.table_block.blocks import TableBlock`` and add it to your StreamField declaration.
 
- .. code-block:: python
+.. code-block:: python
 
-    class DemoStreamBlock(StreamBlock):
-        ...
-        table = TableBlock()
+  class DemoStreamBlock(StreamBlock):
+      ...
+      table = TableBlock()
 
 
 Then, on your page template, the ``{% include_block %}`` tag (called on either the individual block, or the StreamField value as a whole) will render any table blocks it encounters as an HTML ``<table>`` element:
@@ -66,34 +66,34 @@ Default Configuration
 
 When defining a TableBlock, Wagtail provides the ability to pass an optional ``table_options`` dictionary. The default TableBlock dictionary looks like this:
 
- .. code-block:: python
-
-    default_table_options = {
-        'minSpareRows': 0,
-        'startRows': 3,
-        'startCols': 3,
-        'colHeaders': False,
-        'rowHeaders': False,
-        'contextMenu': [
-            'row_above',
-            'row_below',
-            '---------',
-            'col_left',
-            'col_right',
-            '---------',
-            'remove_row',
-            'remove_col',
-            '---------',
-            'undo',
-            'redo'
-        ],
-        'editor': 'text',
-        'stretchH': 'all',
-        'height': 108,
-        'language': language,
-        'renderer': 'text',
-        'autoColumnSize': False,
-    }
+.. code-block:: python
+
+  default_table_options = {
+      'minSpareRows': 0,
+      'startRows': 3,
+      'startCols': 3,
+      'colHeaders': False,
+      'rowHeaders': False,
+      'contextMenu': [
+          'row_above',
+          'row_below',
+          '---------',
+          'col_left',
+          'col_right',
+          '---------',
+          'remove_row',
+          'remove_col',
+          '---------',
+          'undo',
+          'redo'
+      ],
+      'editor': 'text',
+      'stretchH': 'all',
+      'height': 108,
+      'language': language,
+      'renderer': 'text',
+      'autoColumnSize': False,
+  }
 
 
 Configuration Options
@@ -122,26 +122,26 @@ Changing the default table_options
 
 To change the default table options just pass a new table_options dictionary when a new TableBlock is declared.
 
- .. code-block:: python
-
-    new_table_options = {
-        'minSpareRows': 0,
-        'startRows': 6,
-        'startCols': 4,
-        'colHeaders': False,
-        'rowHeaders': False,
-        'contextMenu': True,
-        'editor': 'text',
-        'stretchH': 'all',
-        'height': 216,
-        'language': 'en',
-        'renderer': 'text',
-        'autoColumnSize': False,
-    }
+.. code-block:: python
 
-    class DemoStreamBlock(StreamBlock):
-        ...
-        table = TableBlock(table_options=new_table_options)
+  new_table_options = {
+      'minSpareRows': 0,
+      'startRows': 6,
+      'startCols': 4,
+      'colHeaders': False,
+      'rowHeaders': False,
+      'contextMenu': True,
+      'editor': 'text',
+      'stretchH': 'all',
+      'height': 216,
+      'language': 'en',
+      'renderer': 'text',
+      'autoColumnSize': False,
+  }
+
+  class DemoStreamBlock(StreamBlock):
+      ...
+      table = TableBlock(table_options=new_table_options)
 
 
 Supporting cell alignment
@@ -150,31 +150,31 @@ Supporting cell alignment
 You can activate the `alignment` option by setting a custom `contextMenu` which allows you to set the alignment on a cell selection.
 HTML classes set by handsontable will be kept on the rendered block. You'll then be able to apply your own custom CSS rules to preserve the style. Those class names are:
 
- * Horizontal: ``htLeft``, ``htCenter``, ``htRight``, ``htJustify``
- * Vertical: ``htTop``, ``htMiddle``, ``htBottom``
-
- .. code-block:: python
-
-    new_table_options = {
-        'contextMenu': [
-            'row_above',
-            'row_below',
-            '---------',
-            'col_left',
-            'col_right',
-            '---------',
-            'remove_row',
-            'remove_col',
-            '---------',
-            'undo',
-            'redo',
-            '---------',
-            'copy',
-            'cut'
-            '---------',
-            'alignment',
-        ],
-    }
+* Horizontal: ``htLeft``, ``htCenter``, ``htRight``, ``htJustify``
+* Vertical: ``htTop``, ``htMiddle``, ``htBottom``
+
+.. code-block:: python
+
+  new_table_options = {
+      'contextMenu': [
+          'row_above',
+          'row_below',
+          '---------',
+          'col_left',
+          'col_right',
+          '---------',
+          'remove_row',
+          'remove_col',
+          '---------',
+          'undo',
+          'redo',
+          '---------',
+          'copy',
+          'cut'
+          '---------',
+          'alignment',
+      ],
+  }
 
     class DemoStreamBlock(StreamBlock):
         ...

+ 6 - 6
docs/reference/management_commands.rst

@@ -41,11 +41,11 @@ This command moves a selection of pages from one section of the tree to another.
 
 Options:
 
- - **from**
-   This is the **id** of the page to move pages from. All descendants of this page will be moved to the destination. After the operation is complete, this page will have no children.
+- **from**
+  This is the **id** of the page to move pages from. All descendants of this page will be moved to the destination. After the operation is complete, this page will have no children.
 
- - **to**
-   This is the **id** of the page to move pages to.
+- **to**
+  This is the **id** of the page to move pages to.
 
 
 .. _purge_revisions:
@@ -75,8 +75,8 @@ This command rebuilds the search index from scratch. It is not required when usi
 
 It is recommended to run this command once a week and at the following times:
 
- - whenever any pages have been created through a script (after an import, for example)
- - whenever any changes have been made to models or search configuration
+- whenever any pages have been created through a script (after an import, for example)
+- whenever any changes have been made to models or search configuration
 
 The search may not return any results while this command is running, so avoid running it at peak times.
 

+ 6 - 6
docs/reference/pages/model_reference.rst

@@ -384,9 +384,9 @@ Methods and properties
 
         The scheme part of the URL is calculated based on value of the :attr:`~Site.port` field:
 
-         - 80 = ``http://``
-         - 443 = ``https://``
-         - Everything else will use the ``http://`` scheme and the port will be appended to the end of the hostname (eg. ``http://mysite.com:8000/``)
+        - 80 = ``http://``
+        - 443 = ``https://``
+        - Everything else will use the ``http://`` scheme and the port will be appended to the end of the hostname (eg. ``http://mysite.com:8000/``)
 
     .. automethod:: get_site_root_paths
 
@@ -478,9 +478,9 @@ The ``locale`` and ``translation_key`` fields have a unique key constraint to pr
 
 Every time a page is edited a new ``PageRevision`` is created and saved to the database. It can be used to find the full history of all changes that have been made to a page and it also provides a place for new changes to be kept before going live.
 
- - Revisions can be created from any :class:`~wagtail.core.models.Page` object by calling its :meth:`~Page.save_revision` method
- - The content of the page is JSON-serialised and stored in the :attr:`~PageRevision.content_json` field
- - You can retrieve a ``PageRevision`` as a :class:`~wagtail.core.models.Page` object by calling the :meth:`~PageRevision.as_page_object` method
+- Revisions can be created from any :class:`~wagtail.core.models.Page` object by calling its :meth:`~Page.save_revision` method
+- The content of the page is JSON-serialised and stored in the :attr:`~PageRevision.content_json` field
+- You can retrieve a ``PageRevision`` as a :class:`~wagtail.core.models.Page` object by calling the :meth:`~PageRevision.as_page_object` method
 
 Database fields
 ~~~~~~~~~~~~~~~

+ 10 - 10
docs/reference/pages/queryset_reference.rst

@@ -8,24 +8,24 @@ All models that inherit from :class:`~wagtail.core.models.Page` are given some e
 Examples
 ========
 
- - Selecting only live pages
+- Selecting only live pages
 
-    .. code-block:: python
+  .. code-block:: python
 
-        live_pages = Page.objects.live()
+      live_pages = Page.objects.live()
 
- - Selecting published EventPages that are descendants of events_index
+- Selecting published EventPages that are descendants of events_index
 
-    .. code-block:: python
+  .. code-block:: python
 
-        events = EventPage.objects.live().descendant_of(events_index)
+      events = EventPage.objects.live().descendant_of(events_index)
 
- - Getting a list of menu items
+- Getting a list of menu items
 
-    .. code-block:: python
+  .. code-block:: python
 
-        # This gets a QuerySet of live children of the homepage with ``show_in_menus`` set
-        menu_items = homepage.get_children().live().in_menu()
+      # This gets a QuerySet of live children of the homepage with ``show_in_menus`` set
+      menu_items = homepage.get_children().live().in_menu()
 
 
 Reference

+ 7 - 7
docs/reference/pages/theory.rst

@@ -86,13 +86,13 @@ Anatomy of a Wagtail Request
 
 For going beyond the basics of model definition and interrelation, it might help to know how Wagtail handles requests and constructs responses. In short, it goes something like:
 
-    #.  Django gets a request and routes through Wagtail's URL dispatcher definitions
-    #.  Wagtail checks the hostname of the request to determine which ``Site`` record will handle this request.
-    #.  Starting from the root page of that site, Wagtail traverses the page tree, calling the ``route()`` method and letting each page model decide whether it will handle the request itself or pass it on to a child page.
-    #.  The page responsible for handling the request returns a ``RouteResult`` object from ``route()``, which identifies the page along with any additional ``args``/``kwargs`` to be passed to ``serve()``.
-    #.  Wagtail calls ``serve()``, which constructs a context using ``get_context()``
-    #.  ``serve()`` finds a template to pass it to using ``get_template()``
-    #.  A response object is returned by ``serve()`` and Django responds to the requester.
+#.  Django gets a request and routes through Wagtail's URL dispatcher definitions
+#.  Wagtail checks the hostname of the request to determine which ``Site`` record will handle this request.
+#.  Starting from the root page of that site, Wagtail traverses the page tree, calling the ``route()`` method and letting each page model decide whether it will handle the request itself or pass it on to a child page.
+#.  The page responsible for handling the request returns a ``RouteResult`` object from ``route()``, which identifies the page along with any additional ``args``/``kwargs`` to be passed to ``serve()``.
+#.  Wagtail calls ``serve()``, which constructs a context using ``get_context()``
+#.  ``serve()`` finds a template to pass it to using ``get_template()``
+#.  A response object is returned by ``serve()`` and Django responds to the requester.
 
 You can apply custom behaviour to this process by overriding ``Page`` class methods such as ``route()`` and ``serve()`` in your own models. For examples, see :ref:`model_recipes`.
 

+ 2 - 2
docs/releases/0.4.1.rst

@@ -5,5 +5,5 @@ Wagtail 0.4.1 release notes
 Bug fixes
 ~~~~~~~~~
 
- * Elasticsearch backend now respects the backward-compatible URLS configuration setting, in addition to HOSTS
- * Documentation fixes
+* Elasticsearch backend now respects the backward-compatible URLS configuration setting, in addition to HOSTS
+* Documentation fixes

+ 43 - 41
docs/releases/0.4.rst

@@ -38,6 +38,8 @@ Search on QuerySet with Elasticsearch
 
 It's now possible to perform searches with Elasticsearch on ``PageQuerySet`` objects:
 
+.. code-block:: console
+
     >>> from wagtail.core.models import Page
     >>> Page.objects.live().descendant_of(events_index).search("Hello")
     [<Page: Event 1>, <Page: Event 2>]
@@ -72,65 +74,65 @@ Minor features
 Core
 ----
 
- * Any extra arguments given to ``Page.serve`` are now passed through to ``get_context`` and ``get_template``
- * Added ``in_menu`` and ``not_in_menu`` methods to ``PageQuerySet``
- * Added ``search`` method to ``PageQuerySet``
- * Added ``get_next_siblings`` and ``get_prev_siblings`` to ``Page``
- * Added ``page_published`` signal
- * Added ``copy`` method to ``Page`` to allow copying of pages
- * Added ``construct_whitelister_element_rules`` hook for customising the HTML whitelist used when saving ``RichText`` fields
- * Support for setting a ``subpage_types`` property on ``Page`` models, to define which page types are allowed as subpages
+* Any extra arguments given to ``Page.serve`` are now passed through to ``get_context`` and ``get_template``
+* Added ``in_menu`` and ``not_in_menu`` methods to ``PageQuerySet``
+* Added ``search`` method to ``PageQuerySet``
+* Added ``get_next_siblings`` and ``get_prev_siblings`` to ``Page``
+* Added ``page_published`` signal
+* Added ``copy`` method to ``Page`` to allow copying of pages
+* Added ``construct_whitelister_element_rules`` hook for customising the HTML whitelist used when saving ``RichText`` fields
+* Support for setting a ``subpage_types`` property on ``Page`` models, to define which page types are allowed as subpages
 
 
 Admin
 -----
 
- * Removed the "More" section from the menu
- * Added pagination to page listings
- * Added a new datetime picker widget
- * Updated ``hallo.js`` to version 1.0.4
- * Aesthetic improvements to preview experience
- * Login screen redirects to dashboard if user is already logged in
- * Snippets are now ordered alphabetically
- * Added ``init_new_page`` signal
+* Removed the "More" section from the menu
+* Added pagination to page listings
+* Added a new datetime picker widget
+* Updated ``hallo.js`` to version 1.0.4
+* Aesthetic improvements to preview experience
+* Login screen redirects to dashboard if user is already logged in
+* Snippets are now ordered alphabetically
+* Added ``init_new_page`` signal
 
 
 Search
 ------
 
- * Added a new way to configure searchable/filterable fields on models
- * Added ``get_indexed_objects`` allowing developers to customise which objects get added to the search index
- * Major refactor of Elasticsearch backend
- * Use ``match`` instead of ``query_string`` queries
- * Fields are now indexed in Elasticsearch with their correct type
- * Filter fields are no longer included in ``_all``
- * Fields with partial matching are now indexed together into ``_partials``
+* Added a new way to configure searchable/filterable fields on models
+* Added ``get_indexed_objects`` allowing developers to customise which objects get added to the search index
+* Major refactor of Elasticsearch backend
+* Use ``match`` instead of ``query_string`` queries
+* Fields are now indexed in Elasticsearch with their correct type
+* Filter fields are no longer included in ``_all``
+* Fields with partial matching are now indexed together into ``_partials``
 
 
 Images
 ------
 
- * Added ``original`` as a resizing rule supported by the ``{% image %}`` tag
- * ``image`` tag now accepts extra keyword arguments to be output as attributes on the ``img`` tag
- * Added an ``attrs`` property to image rendition objects to output ``src``, ``width``, ``height`` and ``alt`` attributes all in one go
+* Added ``original`` as a resizing rule supported by the ``{% image %}`` tag
+* ``image`` tag now accepts extra keyword arguments to be output as attributes on the ``img`` tag
+* Added an ``attrs`` property to image rendition objects to output ``src``, ``width``, ``height`` and ``alt`` attributes all in one go
 
 
 Other
 -----
 
- * Added styleguide, for Wagtail developers
+* Added styleguide, for Wagtail developers
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Animated GIFs are now coalesced before resizing
- * The Wand backend clones images before modifying them
- * The admin breadcrumb is now positioned correctly on mobile
- * The page chooser breadcrumb now updates the chooser modal instead of linking to Explorer
- * Embeds - fixed crash when no HTML field is sent back from the embed provider
- * Multiple sites with same hostname but different ports are now allowed
- * It is no longer possible to create multiple sites with ``is_default_site = True``
+* Animated GIFs are now coalesced before resizing
+* The Wand backend clones images before modifying them
+* The admin breadcrumb is now positioned correctly on mobile
+* The page chooser breadcrumb now updates the chooser modal instead of linking to Explorer
+* Embeds - fixed crash when no HTML field is sent back from the embed provider
+* Multiple sites with same hostname but different ports are now allowed
+* It is no longer possible to create multiple sites with ``is_default_site = True``
 
 
 Backwards-incompatible changes
@@ -169,10 +171,10 @@ Template tag libraries renamed
 
 The following template tag libraries have been renamed:
 
- * ``pageurl`` => ``wagtailcore_tags``
- * ``rich_text`` => ``wagtailcore_tags``
- * ``embed_filters`` => ``wagtailembeds_tags``
- * ``image_tags`` => ``wagtailimages_tags``
+* ``pageurl`` => ``wagtailcore_tags``
+* ``rich_text`` => ``wagtailcore_tags``
+* ``embed_filters`` => ``wagtailembeds_tags``
+* ``image_tags`` => ``wagtailimages_tags``
 
 The old names will continue to work, but output a ``DeprecationWarning`` - you are advised to update any ``{% load %}`` tags in your templates to refer to the new names.
 
@@ -202,6 +204,6 @@ Change this to: ``from wagtail.core import hooks``
 Miscellaneous
 ~~~~~~~~~~~~~
 
- * ``Page.show_as_mode``  replaced with ``Page.serve_preview``
- * ``Page.get_page_modes`` method replaced with ``Page.preview_modes`` property
- * ``Page.get_other_siblings`` replaced with ``Page.get_siblings(inclusive=False)``
+* ``Page.show_as_mode``  replaced with ``Page.serve_preview``
+* ``Page.get_page_modes`` method replaced with ``Page.preview_modes`` property
+* ``Page.get_other_siblings`` replaced with ``Page.get_siblings(inclusive=False)``

+ 23 - 23
docs/releases/0.5.rst

@@ -60,32 +60,32 @@ Minor features
 Core
 ----
 
- * Hooks can now be defined using decorator syntax:
+* Hooks can now be defined using decorator syntax:
 
-  .. code-block:: python
+.. code-block:: python
 
-    @hooks.register('construct_main_menu')
-    def construct_main_menu(request, menu_items):
-        menu_items.append(
-            MenuItem('Kittens!', '/kittens/', classnames='icon icon-folder-inverse', order=1000)
-        )
+  @hooks.register('construct_main_menu')
+  def construct_main_menu(request, menu_items):
+      menu_items.append(
+          MenuItem('Kittens!', '/kittens/', classnames='icon icon-folder-inverse', order=1000)
+      )
 
- * The lxml library (used for whitelisting and rewriting of rich text fields) has been replaced with the pure-python html5lib library, to simplify installation.
- * A ``page_unpublished`` signal has been added.
+* The lxml library (used for whitelisting and rewriting of rich text fields) has been replaced with the pure-python html5lib library, to simplify installation.
+* A ``page_unpublished`` signal has been added.
 
 
 Admin
 -----
 
- * Explorer nav now rendered separately and fetched with AJAX when needed.
+* Explorer nav now rendered separately and fetched with AJAX when needed.
 
-   This improves the general performance of the admin interface for large sites.
+  This improves the general performance of the admin interface for large sites.
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Updates to tag fields are now properly committed to the database when publishing directly from the page edit interface.
+* Updates to tag fields are now properly committed to the database when publishing directly from the page edit interface.
 
 
 Upgrade considerations
@@ -96,17 +96,17 @@ Urlconf entries for ``/admin/images/``, ``/admin/embeds/`` etc need to be remove
 
 If you created a Wagtail project prior to the release of Wagtail 0.3, it is likely to contain the following entries in its ``urls.py``:
 
-  .. code-block:: python
-
-    # TODO: some way of getting wagtailimages to register itself within wagtailadmin so that we
-    # don't have to define it separately here
-    url(r'^admin/images/', include(wagtailimages_urls)),
-    url(r'^admin/embeds/', include(wagtailembeds_urls)),
-    url(r'^admin/documents/', include(wagtaildocs_admin_urls)),
-    url(r'^admin/snippets/', include(wagtailsnippets_urls)),
-    url(r'^admin/search/', include(wagtailsearch_admin_urls)),
-    url(r'^admin/users/', include(wagtailusers_urls)),
-    url(r'^admin/redirects/', include(wagtailredirects_urls)),
+.. code-block:: python
+
+  # TODO: some way of getting wagtailimages to register itself within wagtailadmin so that we
+  # don't have to define it separately here
+  url(r'^admin/images/', include(wagtailimages_urls)),
+  url(r'^admin/embeds/', include(wagtailembeds_urls)),
+  url(r'^admin/documents/', include(wagtaildocs_admin_urls)),
+  url(r'^admin/snippets/', include(wagtailsnippets_urls)),
+  url(r'^admin/search/', include(wagtailsearch_admin_urls)),
+  url(r'^admin/users/', include(wagtailusers_urls)),
+  url(r'^admin/redirects/', include(wagtailredirects_urls)),
 
 
 These entries (and the corresponding ``from wagtail.wagtail* import ...`` lines) need to be removed from ``urls.py``. (The entry for ``/admin/`` should be left in, however.)

+ 12 - 12
docs/releases/0.6.rst

@@ -25,22 +25,22 @@ Wagtail can now be used with Django 1.7.
 
 Minor features
 ~~~~~~~~~~~~~~
- * A new template tag has been added for reversing URLs inside routable pages. See :ref:`routablepageurl_template_tag`.
- * RoutablePage can now be used as a mixin. See :class:`wagtail.contrib.wagtailroutablepage.models.RoutablePageMixin`.
- * MenuItems can now have bundled JavaScript
- * Added the ``register_admin_menu_item`` hook for registering menu items at startup. See :ref:`admin_hooks`
- * Added a version indicator into the admin interface (hover over the wagtail to see it)
- * Added Russian translation
+* A new template tag has been added for reversing URLs inside routable pages. See :ref:`routablepageurl_template_tag`.
+* RoutablePage can now be used as a mixin. See :class:`wagtail.contrib.wagtailroutablepage.models.RoutablePageMixin`.
+* MenuItems can now have bundled JavaScript
+* Added the ``register_admin_menu_item`` hook for registering menu items at startup. See :ref:`admin_hooks`
+* Added a version indicator into the admin interface (hover over the wagtail to see it)
+* Added Russian translation
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Page URL generation now returns correct URLs for sites that have the main 'serve' view rooted somewhere other than '/'.
- * Search results in the page chooser now respect the page_type parameter on PageChooserPanel.
- * Rendition filenames are now prevented from going over 60 chars, even with a large focal_point_key.
- * Child relations that are defined on a model's superclass (such as the base Page model) are now picked up correctly by the page editing form, page copy operations and the replace_text management command.
- * Tags on images and documents are now committed to the search index immediately on saving.
+* Page URL generation now returns correct URLs for sites that have the main 'serve' view rooted somewhere other than '/'.
+* Search results in the page chooser now respect the page_type parameter on PageChooserPanel.
+* Rendition filenames are now prevented from going over 60 chars, even with a large focal_point_key.
+* Child relations that are defined on a model's superclass (such as the base Page model) are now picked up correctly by the page editing form, page copy operations and the replace_text management command.
+* Tags on images and documents are now committed to the search index immediately on saving.
 
 
 Upgrade considerations
@@ -61,5 +61,5 @@ If you have an import in your ``urls.py`` file like ``from wagtail.wagtailsearch
 Deprecated features
 ===================
 
- * The ``wagtail.wagtailsearch.indexed`` module has been renamed to ``wagtail.wagtailsearch.index``
+* The ``wagtail.wagtailsearch.indexed`` module has been renamed to ``wagtail.wagtailsearch.index``
 

+ 19 - 19
docs/releases/0.7.rst

@@ -41,27 +41,27 @@ Moderators and administrators now have the ability to lock a page, preventing fu
 Minor features
 ~~~~~~~~~~~~~~
 
- * The ``content_type`` template filter has been removed from the project template, as the same thing can be accomplished with ``self.get_verbose_name|slugify``.
- * Page copy operations now also copy the page revision history.
- * Page models now support a ``parent_page_types`` property in addition to ``subpage types``, to restrict the types of page they can be created under.
- * ``register_snippet`` can now be invoked as a decorator.
- * The project template (used when running ``wagtail start``) has been updated to Django 1.7.
- * The 'boost' applied to the title field on searches has been reduced from 100 to 2.
- * The ``type`` method of ``PageQuerySet`` (used to filter the QuerySet to a specific page type) now includes subclasses of the given page type.
- * The ``update_index`` management command now updates all backends listed in ``WAGTAILSEARCH_BACKENDS``, or a specific one passed on the command line, rather than just the default backend.
- * The 'fill' image resize method now supports an additional parameter defining the closeness of the crop. See :ref:`image_tag`
- * Added support for invalidating Cloudflare caches. See :ref:`frontend_cache_purging`
- * Pages in the explorer can now be ordered by last updated time.
+* The ``content_type`` template filter has been removed from the project template, as the same thing can be accomplished with ``self.get_verbose_name|slugify``.
+* Page copy operations now also copy the page revision history.
+* Page models now support a ``parent_page_types`` property in addition to ``subpage types``, to restrict the types of page they can be created under.
+* ``register_snippet`` can now be invoked as a decorator.
+* The project template (used when running ``wagtail start``) has been updated to Django 1.7.
+* The 'boost' applied to the title field on searches has been reduced from 100 to 2.
+* The ``type`` method of ``PageQuerySet`` (used to filter the QuerySet to a specific page type) now includes subclasses of the given page type.
+* The ``update_index`` management command now updates all backends listed in ``WAGTAILSEARCH_BACKENDS``, or a specific one passed on the command line, rather than just the default backend.
+* The 'fill' image resize method now supports an additional parameter defining the closeness of the crop. See :ref:`image_tag`
+* Added support for invalidating Cloudflare caches. See :ref:`frontend_cache_purging`
+* Pages in the explorer can now be ordered by last updated time.
 
 Bug fixes
 ~~~~~~~~~
 
- * The 'wagtail start' command now works on Windows and other environments where the ``django-admin.py`` executable is not readily accessible.
- * The external image URL generator no longer stores generated images in Django's cache; this was an unintentional side-effect of setting cache control headers.
- * The Elasticsearch backend can now search QuerySets that have been filtered with an 'in' clause of a non-list type (such as a ``ValuesListQuerySet``).
- * Logic around the ``has_unpublished_changes`` flag has been fixed, to prevent issues with the 'View draft' button failing to show in some cases.
- * It is now easier to move pages to the beginning and end of their section
- * Image rendering no longer creates erroneous duplicate Rendition records when the focal point is blank.
+* The 'wagtail start' command now works on Windows and other environments where the ``django-admin.py`` executable is not readily accessible.
+* The external image URL generator no longer stores generated images in Django's cache; this was an unintentional side-effect of setting cache control headers.
+* The Elasticsearch backend can now search QuerySets that have been filtered with an 'in' clause of a non-list type (such as a ``ValuesListQuerySet``).
+* Logic around the ``has_unpublished_changes`` flag has been fixed, to prevent issues with the 'View draft' button failing to show in some cases.
+* It is now easier to move pages to the beginning and end of their section
+* Image rendering no longer creates erroneous duplicate Rendition records when the focal point is blank.
 
 
 Upgrade considerations
@@ -100,5 +100,5 @@ Update to ``focal_point_key`` field on custom Rendition models
 
 The ``focal_point_key`` field on wagtailimages.Rendition has been changed to ``null=False``, to fix an issue with duplicate renditions being created. If you have defined a custom Rendition model in your project (by extending the ``wagtailimages.AbstractRendition`` class), you will need to apply a migration to make the corresponding change on your custom model. Unfortunately neither South nor Django 1.7's migration system are able to generate this automatically - you will need to customise the migration produced by ``./manage.py schemamigration`` / ``./manage.py makemigrations``, using the wagtailimages migration as a guide:
 
- - https://github.com/wagtail/wagtail/blob/master/wagtail/wagtailimages/south_migrations/0004_auto__chg_field_rendition_focal_point_key.py (for South / Django 1.6)
- - https://github.com/wagtail/wagtail/blob/master/wagtail/wagtailimages/migrations/0004_make_focal_point_key_not_nullable.py (for Django 1.7)
+- https://github.com/wagtail/wagtail/blob/master/wagtail/wagtailimages/south_migrations/0004_auto__chg_field_rendition_focal_point_key.py (for South / Django 1.6)
+- https://github.com/wagtail/wagtail/blob/master/wagtail/wagtailimages/migrations/0004_make_focal_point_key_not_nullable.py (for Django 1.7)

+ 1 - 1
docs/releases/0.8.1.rst

@@ -14,4 +14,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Fixed a regression where images would fail to save when feature detection is active
+* Fixed a regression where images would fail to save when feature detection is active

+ 3 - 3
docs/releases/0.8.10.rst

@@ -12,6 +12,6 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * When copying a page, IDs of child objects within page revision records were not remapped to the new objects; this would cause those objects to be lost from the original page when editing the new one
- * Search no longer crashes when auto-indexing a model that doesn't have an id field (Scot Hacker)
- * Resizing single pixel images with the "fill" filter no longer raises ``ZeroDivisionError`` or "tile cannot extend outside image"
+* When copying a page, IDs of child objects within page revision records were not remapped to the new objects; this would cause those objects to be lost from the original page when editing the new one
+* Search no longer crashes when auto-indexing a model that doesn't have an id field (Scot Hacker)
+* Resizing single pixel images with the "fill" filter no longer raises ``ZeroDivisionError`` or "tile cannot extend outside image"

+ 13 - 13
docs/releases/0.8.3.rst

@@ -14,19 +14,19 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Added missing jQuery UI sprite files, causing collectstatic to throw errors (most reported on Heroku)
- * Page system check for on_delete actions of ForeignKeys was throwing false positives when page class descends from an abstract class (Alejandro Giacometti)
- * Page system check for on_delete actions of ForeignKeys now only raises warnings, not errors
- * Fixed a regression where form builder submissions containing a number field would fail with a JSON serialisation error
- * Resizing an image with a focal point equal to the image size would result in a divide-by-zero error
- * Focal point indicator would sometimes be positioned incorrectly for small or thin images
- * Fix: Focal point chooser background colour changed to grey to make working with transparent images easier
- * Elasticsearch configuration now supports specifying HTTP authentication parameters as part of the URL, and defaults to ports 80 (HTTP) and 443 (HTTPS) if port number not specified
- * Fixed a TypeError when previewing pages that use RoutablePageMixin
- * Rendering image with missing file in rich text no longer crashes the entire page
- * IOErrors thrown by underlying image libraries that are not reporting a missing image file are no longer caught
- * Fix: Minimum Pillow version bumped to 2.6.1 to work around a crash when using images with transparency
- * Fix: Images with transparency are now handled better when being used in feature detection
+* Added missing jQuery UI sprite files, causing collectstatic to throw errors (most reported on Heroku)
+* Page system check for on_delete actions of ForeignKeys was throwing false positives when page class descends from an abstract class (Alejandro Giacometti)
+* Page system check for on_delete actions of ForeignKeys now only raises warnings, not errors
+* Fixed a regression where form builder submissions containing a number field would fail with a JSON serialisation error
+* Resizing an image with a focal point equal to the image size would result in a divide-by-zero error
+* Focal point indicator would sometimes be positioned incorrectly for small or thin images
+* Fix: Focal point chooser background colour changed to grey to make working with transparent images easier
+* Elasticsearch configuration now supports specifying HTTP authentication parameters as part of the URL, and defaults to ports 80 (HTTP) and 443 (HTTPS) if port number not specified
+* Fixed a TypeError when previewing pages that use RoutablePageMixin
+* Rendering image with missing file in rich text no longer crashes the entire page
+* IOErrors thrown by underlying image libraries that are not reporting a missing image file are no longer caught
+* Fix: Minimum Pillow version bumped to 2.6.1 to work around a crash when using images with transparency
+* Fix: Images with transparency are now handled better when being used in feature detection
 
 Upgrade considerations
 ======================

+ 5 - 5
docs/releases/0.8.4.rst

@@ -13,8 +13,8 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * It is no longer possible to have the explorer and settings menu open at the same time
- * Page IDs in page revisions were not updated on page copy, causing subsequent edits to be committed to the original page instead
- * Copying a page now creates a new page revision, ensuring that changes to the title/slug are correctly reflected in the editor (and also ensuring that the user performing the copy is logged)
- * Prevent a race condition when creating Filter objects
- * On adding a new page, the available page types are ordered by the displayed verbose name
+* It is no longer possible to have the explorer and settings menu open at the same time
+* Page IDs in page revisions were not updated on page copy, causing subsequent edits to be committed to the original page instead
+* Copying a page now creates a new page revision, ensuring that changes to the title/slug are correctly reflected in the editor (and also ensuring that the user performing the copy is logged)
+* Prevent a race condition when creating Filter objects
+* On adding a new page, the available page types are ordered by the displayed verbose name

+ 12 - 12
docs/releases/0.8.5.rst

@@ -13,15 +13,15 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * On adding a new page, the available page types are ordered by the displayed verbose name
- * Active admin submenus were not properly closed when activating another
- * ``get_sitemap_urls`` is now called on the specific page class so it can now be overridden
- * (Firefox and IE) Fixed preview window hanging and not refocusing when "Preview" button is clicked again
- * Storage backends that return raw ContentFile objects are now handled correctly when resizing images
- * Punctuation characters are no longer stripped when performing search queries
- * When adding tags where there were none before, it is now possible to save a single tag with multiple words in it
- * ``richtext`` template tag no longer raises ``TypeError`` if ``None`` is passed into it
- * Serving documents now uses a streaming HTTP response and will no longer break Django's cache middleware
- * User admin area no longer fails in the presence of negative user IDs (as used by ``django-guardian``'s default settings)
- * Password reset emails now use the ``BASE_URL`` setting for the reset URL
- * ``BASE_URL`` is now included in the project template's default settings file
+* On adding a new page, the available page types are ordered by the displayed verbose name
+* Active admin submenus were not properly closed when activating another
+* ``get_sitemap_urls`` is now called on the specific page class so it can now be overridden
+* (Firefox and IE) Fixed preview window hanging and not refocusing when "Preview" button is clicked again
+* Storage backends that return raw ContentFile objects are now handled correctly when resizing images
+* Punctuation characters are no longer stripped when performing search queries
+* When adding tags where there were none before, it is now possible to save a single tag with multiple words in it
+* ``richtext`` template tag no longer raises ``TypeError`` if ``None`` is passed into it
+* Serving documents now uses a streaming HTTP response and will no longer break Django's cache middleware
+* User admin area no longer fails in the presence of negative user IDs (as used by ``django-guardian``'s default settings)
+* Password reset emails now use the ``BASE_URL`` setting for the reset URL
+* ``BASE_URL`` is now included in the project template's default settings file

+ 4 - 4
docs/releases/0.8.6.rst

@@ -13,15 +13,15 @@ What's new
 Minor features
 ~~~~~~~~~~~~~~
 
- * Translations updated, including new translations for Czech, Italian and Japanese
- * The "fixtree" command can now delete orphaned pages
+* Translations updated, including new translations for Czech, Italian and Japanese
+* The "fixtree" command can now delete orphaned pages
 
 
 Bug fixes
 ~~~~~~~~~
 
- * django-taggit library updated to 0.12.3, to fix a bug with migrations on SQLite on Django 1.7.2 and above (https://github.com/alex/django-taggit/issues/285)
- * Fixed a bug that caused children of a deleted page to not be deleted if they had a different type
+* django-taggit library updated to 0.12.3, to fix a bug with migrations on SQLite on Django 1.7.2 and above (https://github.com/alex/django-taggit/issues/285)
+* Fixed a bug that caused children of a deleted page to not be deleted if they had a different type
 
 
 Upgrade considerations

+ 24 - 24
docs/releases/0.8.rst

@@ -18,35 +18,35 @@ What's new
 Minor features
 ~~~~~~~~~~~~~~
 
- * Page operations (creation, publishing, copying etc) are now logged via Python's ``logging`` framework; to configure this, add a logger entry for ``'wagtail'`` or ``'wagtail.core'`` to the ``LOGGING`` setup in your settings file.
- * The save button on the page edit page now redirects the user back to the edit page instead of the explorer
- * Signal handlers for ``wagtail.wagtailsearch`` and ``wagtail.contrib.wagtailfrontendcache`` are now automatically registered when using Django 1.7 or above.
- * Added a Django 1.7 system check to ensure that foreign keys from Page models are set to ``on_delete=SET_NULL``, to prevent inadvertent (and tree-breaking) page deletions
- * Improved error reporting on image upload, including ability to set a maximum file size via a new setting ``WAGTAILIMAGES_MAX_UPLOAD_SIZE``
- * The external image URL generator now keeps persistent image renditions, rather than regenerating them on each request, so it no longer requires a front-end cache.
- * Added Dutch translation
+* Page operations (creation, publishing, copying etc) are now logged via Python's ``logging`` framework; to configure this, add a logger entry for ``'wagtail'`` or ``'wagtail.core'`` to the ``LOGGING`` setup in your settings file.
+* The save button on the page edit page now redirects the user back to the edit page instead of the explorer
+* Signal handlers for ``wagtail.wagtailsearch`` and ``wagtail.contrib.wagtailfrontendcache`` are now automatically registered when using Django 1.7 or above.
+* Added a Django 1.7 system check to ensure that foreign keys from Page models are set to ``on_delete=SET_NULL``, to prevent inadvertent (and tree-breaking) page deletions
+* Improved error reporting on image upload, including ability to set a maximum file size via a new setting ``WAGTAILIMAGES_MAX_UPLOAD_SIZE``
+* The external image URL generator now keeps persistent image renditions, rather than regenerating them on each request, so it no longer requires a front-end cache.
+* Added Dutch translation
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Replaced references of .username with .get_username() on users for better custom user model support
- * Unpinned dependency versions for six and requests to help prevent dependency conflicts
- * Fixed TypeError when getting embed HTML with oembed on Python 3
- * Made HTML whitelisting in rich text fields more robust at catching disallowed URL schemes such as ``jav\tascript:``
- * ``created_at`` timestamps on page revisions were not being preserved on page copy, causing revisions to get out of sequence
- * When copying pages recursively, revisions of sub-pages were being copied regardless of the ``copy_revisions`` flag
- * Updated the migration dependencies within the project template to ensure that Wagtail's own migrations consistently apply first
- * The cache of site root paths is now cleared when a site is deleted
- * Search indexing now prevents pages from being indexed multiple times, as both the base Page model and the specific subclass
- * Search indexing now avoids trying to index abstract models
- * Fixed references to "username" in login form help text for better custom user model support
- * Later items in a model's search_field list now consistently override earlier items, allowing subclasses to redefine rules from the parent
- * Image uploader now accepts JPEG images that PIL reports as being in MPO format
- * Multiple checkbox fields on form-builder forms did not correctly save multiple values
- * Editing a page's slug and saving it without publishing could sometimes cause the URL paths of child pages to be corrupted
- * ``latest_revision_created_at`` was being cleared on page publish, causing the page to drop to the bottom of explorer listings
- * Searches on partial_match fields were wrongly applying prefix analysis to the search query as well as the document (causing e.g. a query for "water" to match against "wagtail")
+* Replaced references of .username with .get_username() on users for better custom user model support
+* Unpinned dependency versions for six and requests to help prevent dependency conflicts
+* Fixed TypeError when getting embed HTML with oembed on Python 3
+* Made HTML whitelisting in rich text fields more robust at catching disallowed URL schemes such as ``jav\tascript:``
+* ``created_at`` timestamps on page revisions were not being preserved on page copy, causing revisions to get out of sequence
+* When copying pages recursively, revisions of sub-pages were being copied regardless of the ``copy_revisions`` flag
+* Updated the migration dependencies within the project template to ensure that Wagtail's own migrations consistently apply first
+* The cache of site root paths is now cleared when a site is deleted
+* Search indexing now prevents pages from being indexed multiple times, as both the base Page model and the specific subclass
+* Search indexing now avoids trying to index abstract models
+* Fixed references to "username" in login form help text for better custom user model support
+* Later items in a model's search_field list now consistently override earlier items, allowing subclasses to redefine rules from the parent
+* Image uploader now accepts JPEG images that PIL reports as being in MPO format
+* Multiple checkbox fields on form-builder forms did not correctly save multiple values
+* Editing a page's slug and saving it without publishing could sometimes cause the URL paths of child pages to be corrupted
+* ``latest_revision_created_at`` was being cleared on page publish, causing the page to drop to the bottom of explorer listings
+* Searches on partial_match fields were wrongly applying prefix analysis to the search query as well as the document (causing e.g. a query for "water" to match against "wagtail")
 
 
 Upgrade considerations

+ 48 - 48
docs/releases/1.0.rst

@@ -46,21 +46,21 @@ Wagtail-specific additions. It includes bare minimum settings and two apps (home
 Minor changes
 ~~~~~~~~~~~~~
 
- * Dropped Django 1.6 support
- * Dropped Python 2.6 and 3.2 support
- * Dropped Elasticsearch 0.90.x support
- * Removed dependency on ``libsass``
- * Users without usernames can now be created and edited in the admin interface
- * Added new translations for Croatian and Finnish
+* Dropped Django 1.6 support
+* Dropped Python 2.6 and 3.2 support
+* Dropped Elasticsearch 0.90.x support
+* Removed dependency on ``libsass``
+* Users without usernames can now be created and edited in the admin interface
+* Added new translations for Croatian and Finnish
 
 
 Core
 ----
 
- * The Page model now records the date/time that a page was first published, as the field ``first_published_at``
- * Increased the maximum length of a page slug from 50 to 255 characters
- * Added hooks ``register_rich_text_embed_handler`` and ``register_rich_text_link_handler`` for customising link / embed handling within rich text fields
- * Page URL paths can now be longer than 255 characters
+* The Page model now records the date/time that a page was first published, as the field ``first_published_at``
+* Increased the maximum length of a page slug from 50 to 255 characters
+* Added hooks ``register_rich_text_embed_handler`` and ``register_rich_text_link_handler`` for customising link / embed handling within rich text fields
+* Page URL paths can now be longer than 255 characters
 
 
 Admin
@@ -68,76 +68,76 @@ Admin
 
 **UI**
 
- * Improvements to the layout of the left-hand menu footer
- * Menu items of custom apps are now highlighted when being used
- * Added thousands separator for counters on dashboard
- * Added contextual links to admin notification messages
- * When copying pages, it is now possible to specify a place to copy to
- * Added pagination to the snippets listing and chooser
- * Page / document / image / snippet choosers now include a link to edit the chosen item
- * Plain text fields in the page editor now use auto-expanding text areas
- * Added "Add child page" button to admin userbar
- * Added update notifications (See: :ref:`update_notifications`)
+* Improvements to the layout of the left-hand menu footer
+* Menu items of custom apps are now highlighted when being used
+* Added thousands separator for counters on dashboard
+* Added contextual links to admin notification messages
+* When copying pages, it is now possible to specify a place to copy to
+* Added pagination to the snippets listing and chooser
+* Page / document / image / snippet choosers now include a link to edit the chosen item
+* Plain text fields in the page editor now use auto-expanding text areas
+* Added "Add child page" button to admin userbar
+* Added update notifications (See: :ref:`update_notifications`)
 
 
 **Page editor**
 
- * JavaScript includes in the admin backend have been moved to the HTML header, to accommodate form widgets that render inline scripts that depend on libraries such as jQuery
- * The external link chooser in rich text areas now accepts URLs of the form '/some/local/path', to allow linking to non-Wagtail-controlled URLs within the local site
- * Bare text entered in rich text areas is now automatically wrapped in a paragraph element
+* JavaScript includes in the admin backend have been moved to the HTML header, to accommodate form widgets that render inline scripts that depend on libraries such as jQuery
+* The external link chooser in rich text areas now accepts URLs of the form '/some/local/path', to allow linking to non-Wagtail-controlled URLs within the local site
+* Bare text entered in rich text areas is now automatically wrapped in a paragraph element
 
 
 **Edit handlers API**
 
- * ``FieldPanel`` now accepts an optional ``widget`` parameter to override the field's default form widget
- * Page model fields without a ``FieldPanel`` are no longer displayed in the form
- * No longer need to specify the base model on ``InlinePanel`` definitions
- * Page classes can specify an edit_handler property to override the default Content / Promote / Settings tabbed interface. See :ref:`customising_the_tabbed_interface`.
+* ``FieldPanel`` now accepts an optional ``widget`` parameter to override the field's default form widget
+* Page model fields without a ``FieldPanel`` are no longer displayed in the form
+* No longer need to specify the base model on ``InlinePanel`` definitions
+* Page classes can specify an edit_handler property to override the default Content / Promote / Settings tabbed interface. See :ref:`customising_the_tabbed_interface`.
 
 
 **Other admin changes**
 
- * SCSS files in wagtailadmin now use absolute imports, to permit overriding by user stylesheets
- * Removed the dependency on ``LOGIN_URL`` and ``LOGIN_REDIRECT_URL`` settings
- * Password reset view names namespaced to wagtailadmin
- * Removed the need to add permission check on admin views (now automated)
- * Reversing ``django.contrib.auth.admin.login`` will no longer lead to Wagtails login view (making it easier to have frontend login views)
- * Added cache-control headers to all admin views. This allows Varnish/Squid/CDN to run on vanilla settings in front of a Wagtail site
- * Date / time pickers now consistently use times without seconds, to prevent JavasSript behaviour glitches when focusing / unfocusing fields
- * Added hook ``construct_homepage_summary_items`` for customising the site summary panel on the admin homepage
- * Renamed the ``construct_wagtail_edit_bird`` hook to ``construct_wagtail_userbar``
- * 'static' template tags are now used throughout the admin templates, in place of ``STATIC_URL``
+* SCSS files in wagtailadmin now use absolute imports, to permit overriding by user stylesheets
+* Removed the dependency on ``LOGIN_URL`` and ``LOGIN_REDIRECT_URL`` settings
+* Password reset view names namespaced to wagtailadmin
+* Removed the need to add permission check on admin views (now automated)
+* Reversing ``django.contrib.auth.admin.login`` will no longer lead to Wagtails login view (making it easier to have frontend login views)
+* Added cache-control headers to all admin views. This allows Varnish/Squid/CDN to run on vanilla settings in front of a Wagtail site
+* Date / time pickers now consistently use times without seconds, to prevent JavasSript behaviour glitches when focusing / unfocusing fields
+* Added hook ``construct_homepage_summary_items`` for customising the site summary panel on the admin homepage
+* Renamed the ``construct_wagtail_edit_bird`` hook to ``construct_wagtail_userbar``
+* 'static' template tags are now used throughout the admin templates, in place of ``STATIC_URL``
 
 
 Docs
 ----
 
- * Support for ``django-sendfile`` added
- * Documents now served with correct mime-type
- * Support for ``If-Modified-Since`` HTTP header
+* Support for ``django-sendfile`` added
+* Documents now served with correct mime-type
+* Support for ``If-Modified-Since`` HTTP header
 
 
 Search
 ------
 
- * Search view accepts "page" GET parameter in line with pagination
- * Added :ref:`wagtailsearch_backends_auto_update` flag to search backend settings to enable/disable automatically updating the search index on model changes
+* Search view accepts "page" GET parameter in line with pagination
+* Added :ref:`wagtailsearch_backends_auto_update` flag to search backend settings to enable/disable automatically updating the search index on model changes
 
 
 Routable pages
 --------------
 
- * Added a new decorator-based syntax for RoutablePage, compatible with Django 1.8
+* Added a new decorator-based syntax for RoutablePage, compatible with Django 1.8
 
 
 Bug fixes
 ~~~~~~~~~
 
- * The ``document_served`` signal now correctly passes the Document class as ``sender`` and the document as ``instance``
- * Image edit page no longer throws ``OSError`` when the original image is missing
- * Collapsible blocks stay open on any form error
- * Document upload modal no longer switches tabs on form errors
- * ``with_metaclass`` is now imported from Django's bundled copy of the ``six`` library, to avoid errors on Mac OS X from an outdated system copy of the library being imported
+* The ``document_served`` signal now correctly passes the Document class as ``sender`` and the document as ``instance``
+* Image edit page no longer throws ``OSError`` when the original image is missing
+* Collapsible blocks stay open on any form error
+* Document upload modal no longer switches tabs on form errors
+* ``with_metaclass`` is now imported from Django's bundled copy of the ``six`` library, to avoid errors on Mac OS X from an outdated system copy of the library being imported
 
 
 Upgrade considerations

+ 42 - 42
docs/releases/1.1.rst

@@ -38,11 +38,11 @@ Permissions fixes in the admin interface
 
 A number of inconsistencies around permissions in the admin interface were fixed in this release:
 
- * Removed all permissions for "User profile" (not used)
- * Removed "delete" permission for Images and documents (not used)
- * Users can now access images and documents when they only have the "change" permission (previously required "add" permission as well)
- * Permissions for Users now taken from custom user model, if set (previously always used permissions on Django's builtin User model)
- * Groups and Users now respond consistently to their respective "add", "change" and "delete" permissions
+* Removed all permissions for "User profile" (not used)
+* Removed "delete" permission for Images and documents (not used)
+* Users can now access images and documents when they only have the "change" permission (previously required "add" permission as well)
+* Permissions for Users now taken from custom user model, if set (previously always used permissions on Django's builtin User model)
+* Groups and Users now respond consistently to their respective "add", "change" and "delete" permissions
 
 Searchable snippets
 ~~~~~~~~~~~~~~~~~~~
@@ -52,47 +52,47 @@ Snippets that inherit from ``wagtail.wagtailsearch.index.Indexed`` are now given
 Minor features
 ~~~~~~~~~~~~~~
 
- * Implemented deletion of form submissions
- * Implemented pagination in the page chooser modal
- * Changed INSTALLED_APPS in project template to list apps in precedence order
- * The ``{% image %}`` tag now supports filters on the image variable, e.g. ``{% image primary_img|default:secondary_img width-500 %}``
- * Moved the style guide menu item into the Settings sub-menu
- * Search backends can now be specified by module (e.g. ``wagtail.wagtailsearch.backends.elasticsearch``), rather than a specific class (``wagtail.wagtailsearch.backends.elasticsearch.ElasticSearch``)
- * Added ``descendant_of`` filter to the API
- * Added optional directory argument to "wagtail start" command
- * Non-superusers can now view/edit/delete sites if they have the correct permissions
- * Image file size is now stored in the database, to avoid unnecessary filesystem lookups
- * Page URL lookups hit the cache/database less often
- * Updated URLs within the admin backend to use namespaces
- * The ``update_index`` task now indexes objects in batches of 1000, to indicate progress and avoid excessive memory use
- * Added database indexes on PageRevision and Image to improve performance on large sites
- * Search in page chooser now uses Wagtail's search framework, to order results by relevance
- * ``PageChooserPanel`` now supports passing a list (or tuple) of accepted page types
- * The snippet type parameter of ``SnippetChooserPanel`` can now be omitted, or passed as a model name string rather than a model class
- * Added aliases for the ``self`` template variable to accommodate Jinja as a templating engine: ``page`` for pages, ``field_panel`` for field panels / edit handlers, and ``value`` for blocks
- * Added signposting text to the explorer to steer editors away from creating pages at the root level unless they are setting up new sites
- * "Clear choice" and "Edit this page" buttons are no longer shown on the page field of the group page permissions form
- * Altered styling of stream controls to be more like all other buttons
- * Added ability to mark page models as not available for creation using the flag ``is_creatable``; pages that are abstract Django models are automatically made non-creatable
- * New translations for Norwegian Bokmål and Icelandic
+* Implemented deletion of form submissions
+* Implemented pagination in the page chooser modal
+* Changed INSTALLED_APPS in project template to list apps in precedence order
+* The ``{% image %}`` tag now supports filters on the image variable, e.g. ``{% image primary_img|default:secondary_img width-500 %}``
+* Moved the style guide menu item into the Settings sub-menu
+* Search backends can now be specified by module (e.g. ``wagtail.wagtailsearch.backends.elasticsearch``), rather than a specific class (``wagtail.wagtailsearch.backends.elasticsearch.ElasticSearch``)
+* Added ``descendant_of`` filter to the API
+* Added optional directory argument to "wagtail start" command
+* Non-superusers can now view/edit/delete sites if they have the correct permissions
+* Image file size is now stored in the database, to avoid unnecessary filesystem lookups
+* Page URL lookups hit the cache/database less often
+* Updated URLs within the admin backend to use namespaces
+* The ``update_index`` task now indexes objects in batches of 1000, to indicate progress and avoid excessive memory use
+* Added database indexes on PageRevision and Image to improve performance on large sites
+* Search in page chooser now uses Wagtail's search framework, to order results by relevance
+* ``PageChooserPanel`` now supports passing a list (or tuple) of accepted page types
+* The snippet type parameter of ``SnippetChooserPanel`` can now be omitted, or passed as a model name string rather than a model class
+* Added aliases for the ``self`` template variable to accommodate Jinja as a templating engine: ``page`` for pages, ``field_panel`` for field panels / edit handlers, and ``value`` for blocks
+* Added signposting text to the explorer to steer editors away from creating pages at the root level unless they are setting up new sites
+* "Clear choice" and "Edit this page" buttons are no longer shown on the page field of the group page permissions form
+* Altered styling of stream controls to be more like all other buttons
+* Added ability to mark page models as not available for creation using the flag ``is_creatable``; pages that are abstract Django models are automatically made non-creatable
+* New translations for Norwegian Bokmål and Icelandic
 
 Bug fixes
 ~~~~~~~~~
 
- * Text areas in the non-default tab of the page editor now resize to the correct height
- * Tabs in "insert link" modal in the rich text editor no longer disappear (Tim Heap)
- * H2 elements in rich text fields were accidentally given a click() binding when put insite a collapsible multi field panel
- * The ``wagtailimages`` module is now compatible with remote storage backends that do not allow reopening closed files
- * Search no longer crashes when auto-indexing a model that doesn't have an ``id`` field
- * The ``wagtailfrontendcache`` module's HTTP backend has been rewritten to reliably direct requests to the configured cache hostname
- * Resizing single pixel images with the "fill" filter no longer raises ``ZeroDivisionError`` or "tile cannot extend outside image"
- * The QuerySet returned from ``search`` operations when using the database search backend now correctly preserves additional properties of the original query, such as ``prefetch_related`` / ``select_related``
- * Responses from the external image URL generator are correctly marked as streaming and will no longer fail when used with Django's cache middleware
- * Page copy now works with pages that use multiple inheritance
- * Form builder pages now pick up template variables defined in the ``get_context`` method
- * When copying a page, IDs of child objects within page revision records were not remapped to the new objects; this would cause those objects to be lost from the original page when editing the new one
- * Newly added redirects now take effect on all sites, rather than just the site that the Wagtail admin backend was accessed through
- * Add user form no longer throws a hard error on validation failure
+* Text areas in the non-default tab of the page editor now resize to the correct height
+* Tabs in "insert link" modal in the rich text editor no longer disappear (Tim Heap)
+* H2 elements in rich text fields were accidentally given a click() binding when put insite a collapsible multi field panel
+* The ``wagtailimages`` module is now compatible with remote storage backends that do not allow reopening closed files
+* Search no longer crashes when auto-indexing a model that doesn't have an ``id`` field
+* The ``wagtailfrontendcache`` module's HTTP backend has been rewritten to reliably direct requests to the configured cache hostname
+* Resizing single pixel images with the "fill" filter no longer raises ``ZeroDivisionError`` or "tile cannot extend outside image"
+* The QuerySet returned from ``search`` operations when using the database search backend now correctly preserves additional properties of the original query, such as ``prefetch_related`` / ``select_related``
+* Responses from the external image URL generator are correctly marked as streaming and will no longer fail when used with Django's cache middleware
+* Page copy now works with pages that use multiple inheritance
+* Form builder pages now pick up template variables defined in the ``get_context`` method
+* When copying a page, IDs of child objects within page revision records were not remapped to the new objects; this would cause those objects to be lost from the original page when editing the new one
+* Newly added redirects now take effect on all sites, rather than just the site that the Wagtail admin backend was accessed through
+* Add user form no longer throws a hard error on validation failure
 
 
 Upgrade considerations

+ 2 - 2
docs/releases/1.10.1.rst

@@ -13,5 +13,5 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Fix admin page preview that was broken 24 hours after previewing a page (Martin Hill)
- * Removed territory-specific translations for Spanish, Polish, Swedish, Russian and Chinese (Taiwan) that block more complete translations from being used (Matt Westcott)
+* Fix admin page preview that was broken 24 hours after previewing a page (Martin Hill)
+* Removed territory-specific translations for Spanish, Polish, Swedish, Russian and Chinese (Taiwan) that block more complete translations from being used (Matt Westcott)

+ 55 - 55
docs/releases/1.10.rst

@@ -53,66 +53,66 @@ This was developed by Bertrand Bordage.
 Other features
 ~~~~~~~~~~~~~~
 
- * Use minified versions of jQuery and jQuery UI in the admin. Total savings without compression 371 KB (Tom Dyson)
- * Hooks can now specify the order in which they are run (Gagaro)
- * Added a ``submit_buttons`` block to login template (Gagaro)
- * Added ``construct_image_chooser_queryset``, ``construct_document_chooser_queryset`` and ``construct_page_chooser_queryset`` hooks (Gagaro)
- * The homepage created in the project template is now titled "Home" rather than "Homepage" (Karl Hobley)
- * Signal receivers for custom ``Image`` and ``Rendition`` models are connected automatically (Mike Dingjan)
- * ``PageChooserBlock`` can now accept a list/tuple of page models as ``target_model`` (Mikalai Radchuk)
- * Styling tweaks for the ModelAdmin's ``IndexView`` to be more inline with the Wagtail styleguide (Andy Babic)
- * Added ``.nvmrc`` to the project root for Node versioning support (Janneke Janssen)
- * Added ``form_fields_exclude`` property to ModelAdmin views (Matheus Bratfisch)
- * User creation / edit form now enforces password validators set in ``AUTH_PASSWORD_VALIDATORS`` (Bertrand Bordage)
- * Added support for displaying ``non_field_errors`` when validation fails in the page editor (Matt Westcott)
- * Added ``WAGTAILADMIN_RECENT_EDITS_LIMIT`` setting to to define the number of your most recent edits on the dashboard (Maarten Kling)
- * Added link to the full Elasticsearch setup documentation from the Performance page (Matt Westcott)
- * Tag input fields now accept spaces in tags by default, and can be overridden with the ``TAG_SPACES_ALLOWED`` setting (Kees Hink, Alex Gleason)
- * Page chooser widgets now display the required page type where relevant (Christine Ho)
- * Site root pages are now indicated with a globe icon in the explorer listing (Nick Smith, Huub Bouma)
- * Draft page view is now restricted to users with edit / publish permission over the page (Kees Hink)
- * Added the option to delete a previously saved focal point on a image (Maarten Kling)
- * Page explorer menu item, search and summary panel are now hidden for users with no page permissions (Tim Heap)
- * Added support for custom date and datetime formats in input fields (Bojan Mihelac)
- * Added support for custom Django REST framework serialiser fields in ``Page.api_fields`` using a new ``APIField`` class (Karl Hobley)
- * Added ``classname`` argument to ``StreamFieldPanel`` (Christine Ho)
- * Added ``group`` keyword argument to StreamField blocks for grouping related blocks together in the block menu (Andreas Nüßlein)
- * Update the sitemap generator to use the Django sitemap module (Michael van Tellingen, Mike Dingjan)
+* Use minified versions of jQuery and jQuery UI in the admin. Total savings without compression 371 KB (Tom Dyson)
+* Hooks can now specify the order in which they are run (Gagaro)
+* Added a ``submit_buttons`` block to login template (Gagaro)
+* Added ``construct_image_chooser_queryset``, ``construct_document_chooser_queryset`` and ``construct_page_chooser_queryset`` hooks (Gagaro)
+* The homepage created in the project template is now titled "Home" rather than "Homepage" (Karl Hobley)
+* Signal receivers for custom ``Image`` and ``Rendition`` models are connected automatically (Mike Dingjan)
+* ``PageChooserBlock`` can now accept a list/tuple of page models as ``target_model`` (Mikalai Radchuk)
+* Styling tweaks for the ModelAdmin's ``IndexView`` to be more inline with the Wagtail styleguide (Andy Babic)
+* Added ``.nvmrc`` to the project root for Node versioning support (Janneke Janssen)
+* Added ``form_fields_exclude`` property to ModelAdmin views (Matheus Bratfisch)
+* User creation / edit form now enforces password validators set in ``AUTH_PASSWORD_VALIDATORS`` (Bertrand Bordage)
+* Added support for displaying ``non_field_errors`` when validation fails in the page editor (Matt Westcott)
+* Added ``WAGTAILADMIN_RECENT_EDITS_LIMIT`` setting to to define the number of your most recent edits on the dashboard (Maarten Kling)
+* Added link to the full Elasticsearch setup documentation from the Performance page (Matt Westcott)
+* Tag input fields now accept spaces in tags by default, and can be overridden with the ``TAG_SPACES_ALLOWED`` setting (Kees Hink, Alex Gleason)
+* Page chooser widgets now display the required page type where relevant (Christine Ho)
+* Site root pages are now indicated with a globe icon in the explorer listing (Nick Smith, Huub Bouma)
+* Draft page view is now restricted to users with edit / publish permission over the page (Kees Hink)
+* Added the option to delete a previously saved focal point on a image (Maarten Kling)
+* Page explorer menu item, search and summary panel are now hidden for users with no page permissions (Tim Heap)
+* Added support for custom date and datetime formats in input fields (Bojan Mihelac)
+* Added support for custom Django REST framework serialiser fields in ``Page.api_fields`` using a new ``APIField`` class (Karl Hobley)
+* Added ``classname`` argument to ``StreamFieldPanel`` (Christine Ho)
+* Added ``group`` keyword argument to StreamField blocks for grouping related blocks together in the block menu (Andreas Nüßlein)
+* Update the sitemap generator to use the Django sitemap module (Michael van Tellingen, Mike Dingjan)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Marked 'Date from' / 'Date to' strings in wagtailforms for translation (Vorlif)
- * "File" field label on image edit form is now translated (Stein Strindhaug)
- * Unreliable preview is now reliable by always opening in a new window (Kjartan Sverrisson)
- * Fixed placement of ``{{ block.super }}`` in ``snippets/type_index.html`` (LB (Ben Johnston))
- * Optimised database queries on group edit page (Ashia Zawaduk)
- * Choosing a popular search term for promoted search results now works correctly after pagination (Janneke Janssen)
- * IDs used in tabbed interfaces are now namespaced to avoid collisions with other page elements (Janneke Janssen)
- * Page title not displaying page name when moving a page (Trent Holliday)
- * The ModelAdmin module can now work without the wagtailimages and wagtaildocs apps installed (Andy Babic)
- * Cloudflare error handling now handles non-string error responses correctly (hdnpl)
- * Search indexing now uses a defined query ordering to prevent objects from being skipped (Christian Peters)
- * Ensure that number localisation is not applied to object IDs within admin templates (Tom Hendrikx)
- * Paginating with a search present was always returning the 1st page in Internet Explorer 10 & 11 (Ralph Jacobs)
- * RoutablePageMixin and wagtailforms previews now set the ``request.is_preview`` flag (Wietze Helmantel)
- * The save and preview buttons in the page editor are now mobile-friendly (Maarten Kling)
- * Page links within rich text now respect custom URLs defined on specific page models (Gary Krige, Huub Bouma)
- * Default avatar no longer visible when using a transparent gravatar image (Thijs Kramer)
- * Scrolling within the datetime picker is now usable again for touchpads (Ralph Jacobs)
- * List-based fields within form builder form submissions are now displayed as comma-separated strings rather than as Python lists (Christine Ho, Matt Westcott)
- * The page type usage listing now have a translatable page title (Ramon de Jezus)
- * Styles for submission filtering form now have a consistent height. (Thijs Kramer)
- * Slicing a search result set no longer loses the annotation added by ``annotate_score`` (Karl Hobley)
- * String-based primary keys are now escaped correctly in ModelAdmin URLs (Andreas Nüßlein)
- * Empty search in the API now works (Morgan Aubert)
- * ``RichTextBlock`` toolbar now correctly positioned within ``StructBlock`` (Janneke Janssen)
- * Fixed display of ManyToMany fields and False values on the ModelAdmin inspect view (Andy Babic)
- * Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
- * Specifying the full file name in documents URL is mandatory (Morgan Aubert)
- * Reordering inline forms now works correctly when moving past a deleted form (Janneke Janssen)
- * Removed erroneous `|safe` filter from search results template in project template (Karl Hobley)
+* Marked 'Date from' / 'Date to' strings in wagtailforms for translation (Vorlif)
+* "File" field label on image edit form is now translated (Stein Strindhaug)
+* Unreliable preview is now reliable by always opening in a new window (Kjartan Sverrisson)
+* Fixed placement of ``{{ block.super }}`` in ``snippets/type_index.html`` (LB (Ben Johnston))
+* Optimised database queries on group edit page (Ashia Zawaduk)
+* Choosing a popular search term for promoted search results now works correctly after pagination (Janneke Janssen)
+* IDs used in tabbed interfaces are now namespaced to avoid collisions with other page elements (Janneke Janssen)
+* Page title not displaying page name when moving a page (Trent Holliday)
+* The ModelAdmin module can now work without the wagtailimages and wagtaildocs apps installed (Andy Babic)
+* Cloudflare error handling now handles non-string error responses correctly (hdnpl)
+* Search indexing now uses a defined query ordering to prevent objects from being skipped (Christian Peters)
+* Ensure that number localisation is not applied to object IDs within admin templates (Tom Hendrikx)
+* Paginating with a search present was always returning the 1st page in Internet Explorer 10 & 11 (Ralph Jacobs)
+* RoutablePageMixin and wagtailforms previews now set the ``request.is_preview`` flag (Wietze Helmantel)
+* The save and preview buttons in the page editor are now mobile-friendly (Maarten Kling)
+* Page links within rich text now respect custom URLs defined on specific page models (Gary Krige, Huub Bouma)
+* Default avatar no longer visible when using a transparent gravatar image (Thijs Kramer)
+* Scrolling within the datetime picker is now usable again for touchpads (Ralph Jacobs)
+* List-based fields within form builder form submissions are now displayed as comma-separated strings rather than as Python lists (Christine Ho, Matt Westcott)
+* The page type usage listing now have a translatable page title (Ramon de Jezus)
+* Styles for submission filtering form now have a consistent height. (Thijs Kramer)
+* Slicing a search result set no longer loses the annotation added by ``annotate_score`` (Karl Hobley)
+* String-based primary keys are now escaped correctly in ModelAdmin URLs (Andreas Nüßlein)
+* Empty search in the API now works (Morgan Aubert)
+* ``RichTextBlock`` toolbar now correctly positioned within ``StructBlock`` (Janneke Janssen)
+* Fixed display of ManyToMany fields and False values on the ModelAdmin inspect view (Andy Babic)
+* Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
+* Specifying the full file name in documents URL is mandatory (Morgan Aubert)
+* Reordering inline forms now works correctly when moving past a deleted form (Janneke Janssen)
+* Removed erroneous `|safe` filter from search results template in project template (Karl Hobley)
 
 
 Upgrade considerations

+ 1 - 1
docs/releases/1.11.1.rst

@@ -13,4 +13,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Custom display page titles defined with ``get_admin_display_title`` are now shown within the page explorer menu (Matt Westcott, Janneke Janssen)
+* Custom display page titles defined with ``get_admin_display_title`` are now shown within the page explorer menu (Matt Westcott, Janneke Janssen)

+ 35 - 35
docs/releases/1.11.rst

@@ -15,31 +15,31 @@ Explorer menu built with the admin API and React
 
 After more than a year of work, the new explorer menu has finally landed! It comes with the following improvements:
 
- * View all pages - not just the ones with child pages.
- * Better performance, no matter the number of pages or levels in the hierarchy.
- * Navigate the menu via keyboard.
- * View Draft pages, and go to page editing, directly from the menu.
+* View all pages - not just the ones with child pages.
+* Better performance, no matter the number of pages or levels in the hierarchy.
+* Navigate the menu via keyboard.
+* View Draft pages, and go to page editing, directly from the menu.
 
 Beyond features, the explorer is built with the new admin API and React components.
 This will facilitate further evolutions to make it even faster and user-friendly.
 This work is the product of ``4`` Wagtail sprints, and the efforts of ``16`` people, listed here by order of first involvement:
 
- * Karl Hobley (Cape town sprint, admin API)
- * Josh Barr (Cape town sprint, prototype UI)
- * Thibaud Colas (Ede sprint, Reykjavík sprint)
- * Janneke Janssen (Ede sprint, Reykjavík sprint, Wagtail Space sprint)
- * Rob Moorman (Ede sprint, eslint-config-wagtail, ES6+React+Redux styleguide)
- * Maurice Bartnig (Ede sprint, i18n and bug fixes)
- * Jonny Scholes (code review)
- * Matt Westcott (Reykjavík sprint, refactorings)
- * Sævar Öfjörð Magnússon (Reykjavík sprint)
- * Eirikur Ingi Magnusson (Reykjavík sprint)
- * Harris Lapiroff (Reykjavík sprint, tab-accessible navigation)
- * Hugo van den Berg (testing, Wagtail Space sprint)
- * Olly Willans (UI, UX, Wagtail Space sprint)
- * Andy Babic (UI, UX)
- * Ben Enright (UI, UX)
- * Bertrand Bordage (testing, documentation)
+* Karl Hobley (Cape town sprint, admin API)
+* Josh Barr (Cape town sprint, prototype UI)
+* Thibaud Colas (Ede sprint, Reykjavík sprint)
+* Janneke Janssen (Ede sprint, Reykjavík sprint, Wagtail Space sprint)
+* Rob Moorman (Ede sprint, eslint-config-wagtail, ES6+React+Redux styleguide)
+* Maurice Bartnig (Ede sprint, i18n and bug fixes)
+* Jonny Scholes (code review)
+* Matt Westcott (Reykjavík sprint, refactorings)
+* Sævar Öfjörð Magnússon (Reykjavík sprint)
+* Eirikur Ingi Magnusson (Reykjavík sprint)
+* Harris Lapiroff (Reykjavík sprint, tab-accessible navigation)
+* Hugo van den Berg (testing, Wagtail Space sprint)
+* Olly Willans (UI, UX, Wagtail Space sprint)
+* Andy Babic (UI, UX)
+* Ben Enright (UI, UX)
+* Bertrand Bordage (testing, documentation)
 
 Privacy settings on documents
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -51,25 +51,25 @@ This feature was developed by Ulrich Wagner and Matt Westcott. Thank you to `Wha
 Other features
 ~~~~~~~~~~~~~~
 
- * Optimised page URL generation by caching site paths in the request scope (Tobias McNulty, Matt Westcott)
- * The current live version of a page is now tracked on the revision listing view (Matheus Bratfisch)
- * Each block created in a ``StreamField`` is now assigned a globally unique identifier (Matt Westcott)
- * Mixcloud oEmbed pattern has been updated (Alice Rose)
- * Added ``last_published_at`` field to the Page model (Matt Westcott)
- * Added ``show_in_menus_default`` flag on page models, to allow "show in menus" to be checked by default (LB (Ben Johnston))
- * "Copy page" form now validates against copying to a destination where the user does not have permission (Henk-Jan van Hasselaar)
- * Allows reverse relations in ``RelatedFields`` for elasticsearch & PostgreSQL search backends (Lucas Moeskops, Bertrand Bordage)
- * Added oEmbed support for Facebook (Mikalai Radchuk)
- * Added oEmbed support for Tumblr (Mikalai Radchuk)
+* Optimised page URL generation by caching site paths in the request scope (Tobias McNulty, Matt Westcott)
+* The current live version of a page is now tracked on the revision listing view (Matheus Bratfisch)
+* Each block created in a ``StreamField`` is now assigned a globally unique identifier (Matt Westcott)
+* Mixcloud oEmbed pattern has been updated (Alice Rose)
+* Added ``last_published_at`` field to the Page model (Matt Westcott)
+* Added ``show_in_menus_default`` flag on page models, to allow "show in menus" to be checked by default (LB (Ben Johnston))
+* "Copy page" form now validates against copying to a destination where the user does not have permission (Henk-Jan van Hasselaar)
+* Allows reverse relations in ``RelatedFields`` for elasticsearch & PostgreSQL search backends (Lucas Moeskops, Bertrand Bordage)
+* Added oEmbed support for Facebook (Mikalai Radchuk)
+* Added oEmbed support for Tumblr (Mikalai Radchuk)
 
 Bug fixes
 ~~~~~~~~~
 
- * Unauthenticated AJAX requests to admin views now return 403 rather than redirecting to the login page (Karl Hobley)
- * ``TableBlock`` options ``afterChange``, ``afterCreateCol``, ``afterCreateRow``, ``afterRemoveCol``, ``afterRemoveRow`` and ``contextMenu`` can now be overridden (Loic Teixeira)
- * The lastmod field returned by wagtailsitemaps now shows the last published date rather than the date of the last draft edit (Matt Westcott)
- * Document chooser upload form no longer renders container elements for hidden fields (Jeffrey Chau)
- * Prevented exception when visiting a preview URL without initiating the preview (Paul Kamp)
+* Unauthenticated AJAX requests to admin views now return 403 rather than redirecting to the login page (Karl Hobley)
+* ``TableBlock`` options ``afterChange``, ``afterCreateCol``, ``afterCreateRow``, ``afterRemoveCol``, ``afterRemoveRow`` and ``contextMenu`` can now be overridden (Loic Teixeira)
+* The lastmod field returned by wagtailsitemaps now shows the last published date rather than the date of the last draft edit (Matt Westcott)
+* Document chooser upload form no longer renders container elements for hidden fields (Jeffrey Chau)
+* Prevented exception when visiting a preview URL without initiating the preview (Paul Kamp)
 
 
 Upgrade considerations

+ 3 - 3
docs/releases/1.12.1.rst

@@ -13,6 +13,6 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Prevent home page draft title from displaying as blank (Mikalai Radchuk, Matt Westcott)
- * Fix regression on styling of preview button with more than one preview mode (Jack Paine)
- * Enabled translations within date-time chooser widget (Lucas Moeskops)
+* Prevent home page draft title from displaying as blank (Mikalai Radchuk, Matt Westcott)
+* Fix regression on styling of preview button with more than one preview mode (Jack Paine)
+* Enabled translations within date-time chooser widget (Lucas Moeskops)

+ 4 - 4
docs/releases/1.12.2.rst

@@ -13,7 +13,7 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Migration for addition of ``Page.draft_title`` field is now reversible (Venelin Stoykov)
- * Fixed failure on application startup when ``ManifestStaticFilesStorage`` is in use and ``collectstatic`` has not yet been run (Matt Westcott)
- * Fixed handling of Vimeo and other oEmbed providers with a format parameter in the endpoint URL (Mitchel Cabuloy)
- * Fixed regression in rendering save button in wagtail.contrib.settings edit view (Matt Westcott)
+* Migration for addition of ``Page.draft_title`` field is now reversible (Venelin Stoykov)
+* Fixed failure on application startup when ``ManifestStaticFilesStorage`` is in use and ``collectstatic`` has not yet been run (Matt Westcott)
+* Fixed handling of Vimeo and other oEmbed providers with a format parameter in the endpoint URL (Mitchel Cabuloy)
+* Fixed regression in rendering save button in wagtail.contrib.settings edit view (Matt Westcott)

+ 7 - 7
docs/releases/1.12.3.rst

@@ -13,10 +13,10 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * API listing views no longer fail when no site records are defined (Karl Hobley)
- * Pinned Django REST Framework to <3.7 to restore Django 1.8 compatibility (Matt Westcott)
- * Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
- * Fixed error in Postgres search backend when searching specific fields of a ``specific()`` Page QuerySet (Bertrand Bordage, Matt Westcott)
- * Fixed error on Elasticsearch backend when passing a QuerySet as an ``__in`` filter (Karl Hobley, Matt Westcott)
- * ``__isnull`` filters no longer fail on Elasticsearch 5 (Karl Hobley)
- * Prevented intermittent failures on Postgres search backend when a field is defined as both a ``SearchField`` and a ``FilterField`` (Matt Westcott)
+* API listing views no longer fail when no site records are defined (Karl Hobley)
+* Pinned Django REST Framework to <3.7 to restore Django 1.8 compatibility (Matt Westcott)
+* Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
+* Fixed error in Postgres search backend when searching specific fields of a ``specific()`` Page QuerySet (Bertrand Bordage, Matt Westcott)
+* Fixed error on Elasticsearch backend when passing a QuerySet as an ``__in`` filter (Karl Hobley, Matt Westcott)
+* ``__isnull`` filters no longer fail on Elasticsearch 5 (Karl Hobley)
+* Prevented intermittent failures on Postgres search backend when a field is defined as both a ``SearchField`` and a ``FilterField`` (Matt Westcott)

+ 4 - 4
docs/releases/1.12.4.rst

@@ -13,7 +13,7 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Fix support of ``ATOMIC_REBUILD`` for projects with Elasticsearch client ``>=1.7.0`` (Mikalai Radchuk)
- * Logging an indexing failure on an object with a non-ASCII representation no longer crashes on Python 2 (Aram Dulyan)
- * Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
- * Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Andrew Crewdson, Matt Westcott)
+* Fix support of ``ATOMIC_REBUILD`` for projects with Elasticsearch client ``>=1.7.0`` (Mikalai Radchuk)
+* Logging an indexing failure on an object with a non-ASCII representation no longer crashes on Python 2 (Aram Dulyan)
+* Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
+* Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Andrew Crewdson, Matt Westcott)

+ 2 - 2
docs/releases/1.12.5.rst

@@ -13,5 +13,5 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
- * Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)
+* Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
+* Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)

+ 1 - 1
docs/releases/1.12.6.rst

@@ -13,4 +13,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
+* Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)

+ 23 - 23
docs/releases/1.12.rst

@@ -26,33 +26,33 @@ New configuration options for embedded media have been added, to give greater co
 Other features
 ~~~~~~~~~~~~~~
 
- * The admin interface now displays a title of the latest draft (Mikalai Radchuk)
- * ``RoutablePageMixin`` now has a default "index" route (Andreas Nüßlein, Matt Westcott)
- * Added multi-select form field to the form builder (dwasyl)
- * Improved performance of sitemap generation (Levi Adler)
- * StreamField now respects the ``blank`` setting; StreamBlock accepts a ``required`` setting (Loic Teixeira)
- * StreamBlock now accepts ``min_num``, ``max_num`` and ``block_counts`` settings to control the minimum and maximum numbers of blocks (Edwar Baron, Matt Westcott)
- * Users can no longer remove their own active / superuser flags through Settings -> Users (Stein Strindhaug, Huub Bouma)
- * The ``process_form_submission`` method of form pages now return the created form submission object (Christine Ho)
- * Added ``WAGTAILUSERS_PASSWORD_ENABLED`` and ``WAGTAILUSERS_PASSWORD_REQUIRED`` settings to permit creating users with no Django-side passwords, to support external authentication setups (Matt Westcott)
- * Added help text parameter to ``DecimalBlock`` and ``RegexBlock`` (Tomasz Knapik)
- * Optimised caudal oscillation parameters on logo (Jack Paine)
+* The admin interface now displays a title of the latest draft (Mikalai Radchuk)
+* ``RoutablePageMixin`` now has a default "index" route (Andreas Nüßlein, Matt Westcott)
+* Added multi-select form field to the form builder (dwasyl)
+* Improved performance of sitemap generation (Levi Adler)
+* StreamField now respects the ``blank`` setting; StreamBlock accepts a ``required`` setting (Loic Teixeira)
+* StreamBlock now accepts ``min_num``, ``max_num`` and ``block_counts`` settings to control the minimum and maximum numbers of blocks (Edwar Baron, Matt Westcott)
+* Users can no longer remove their own active / superuser flags through Settings -> Users (Stein Strindhaug, Huub Bouma)
+* The ``process_form_submission`` method of form pages now return the created form submission object (Christine Ho)
+* Added ``WAGTAILUSERS_PASSWORD_ENABLED`` and ``WAGTAILUSERS_PASSWORD_REQUIRED`` settings to permit creating users with no Django-side passwords, to support external authentication setups (Matt Westcott)
+* Added help text parameter to ``DecimalBlock`` and ``RegexBlock`` (Tomasz Knapik)
+* Optimised caudal oscillation parameters on logo (Jack Paine)
 
 Bug fixes
 ~~~~~~~~~
 
- * FieldBlocks in StreamField now call the field's ``prepare_value`` method (Tim Heap)
- * Initial disabled state of InlinePanel add button is now set correctly on non-default tabs (Matthew Downey)
- * Redirects with unicode characters now work (Rich Brennan)
- * Prevent explorer view from crashing when page model definitions are missing, allowing the offending pages to be deleted (Matt Westcott)
- * Hide the userbar from printed page representation (Eugene Morozov)
- * Prevent the page editor footer content from collapsing into two lines unnecessarily (Jack Paine)
- * StructBlock values no longer render HTML templates as their ``str`` representation, to prevent infinite loops in debugging / logging tools (Matt Westcott)
- * Removed deprecated jQuery ``load`` call from TableBlock initialisation (Jack Paine)
- * Position of options in mobile nav-menu (Jack Paine)
- * Center page editor footer regardless of screen width (Jack Paine)
- * Change the design of the navbar toggle icon so that it no longer obstructs page headers (Jack Paine)
- * Document add/edit forms no longer render container elements for hidden fields (Jeffrey Chau)
+* FieldBlocks in StreamField now call the field's ``prepare_value`` method (Tim Heap)
+* Initial disabled state of InlinePanel add button is now set correctly on non-default tabs (Matthew Downey)
+* Redirects with unicode characters now work (Rich Brennan)
+* Prevent explorer view from crashing when page model definitions are missing, allowing the offending pages to be deleted (Matt Westcott)
+* Hide the userbar from printed page representation (Eugene Morozov)
+* Prevent the page editor footer content from collapsing into two lines unnecessarily (Jack Paine)
+* StructBlock values no longer render HTML templates as their ``str`` representation, to prevent infinite loops in debugging / logging tools (Matt Westcott)
+* Removed deprecated jQuery ``load`` call from TableBlock initialisation (Jack Paine)
+* Position of options in mobile nav-menu (Jack Paine)
+* Center page editor footer regardless of screen width (Jack Paine)
+* Change the design of the navbar toggle icon so that it no longer obstructs page headers (Jack Paine)
+* Document add/edit forms no longer render container elements for hidden fields (Jeffrey Chau)
 
 Upgrade considerations
 ======================

+ 7 - 7
docs/releases/1.13.1.rst

@@ -13,10 +13,10 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * API listing views no longer fail when no site records are defined (Karl Hobley)
- * Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
- * Fixed incorrect z-index on userbar causing it to appear behind page content (Stein Strindhaug)
- * Fixed error in Postgres search backend when searching specific fields of a ``specific()`` Page QuerySet (Bertrand Bordage, Matt Westcott)
- * Fixed error on Elasticsearch backend when passing a QuerySet as an ``__in`` filter (Karl Hobley, Matt Westcott)
- * ``__isnull`` filters no longer fail on Elasticsearch 5 (Karl Hobley)
- * Prevented intermittent failures on Postgres search backend when a field is defined as both a ``SearchField`` and a ``FilterField`` (Matt Westcott)
+* API listing views no longer fail when no site records are defined (Karl Hobley)
+* Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
+* Fixed incorrect z-index on userbar causing it to appear behind page content (Stein Strindhaug)
+* Fixed error in Postgres search backend when searching specific fields of a ``specific()`` Page QuerySet (Bertrand Bordage, Matt Westcott)
+* Fixed error on Elasticsearch backend when passing a QuerySet as an ``__in`` filter (Karl Hobley, Matt Westcott)
+* ``__isnull`` filters no longer fail on Elasticsearch 5 (Karl Hobley)
+* Prevented intermittent failures on Postgres search backend when a field is defined as both a ``SearchField`` and a ``FilterField`` (Matt Westcott)

+ 4 - 4
docs/releases/1.13.2.rst

@@ -13,7 +13,7 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Fix support of ``ATOMIC_REBUILD`` for projects with Elasticsearch client ``>=1.7.0`` (Mikalai Radchuk)
- * Logging an indexing failure on an object with a non-ASCII representation no longer crashes on Python 2 (Aram Dulyan)
- * Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
- * Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)
+* Fix support of ``ATOMIC_REBUILD`` for projects with Elasticsearch client ``>=1.7.0`` (Mikalai Radchuk)
+* Logging an indexing failure on an object with a non-ASCII representation no longer crashes on Python 2 (Aram Dulyan)
+* Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
+* Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)

+ 2 - 2
docs/releases/1.13.3.rst

@@ -13,5 +13,5 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
- * Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)
+* Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
+* Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)

+ 1 - 1
docs/releases/1.13.4.rst

@@ -13,4 +13,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
+* Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)

+ 26 - 26
docs/releases/1.13.rst

@@ -17,33 +17,33 @@ What's new
 New features
 ~~~~~~~~~~~~
 
- * Front-end cache invalidator now supports purging URLs as a batch - see :ref:`frontend_cache_invalidating_urls` (Karl Hobley)
- * :doc:`Custom document model </advanced_topics/documents/custom_document_model>` is now documented (Emily Horsman)
- * Use minified versions of CSS in the admin by adding minification to the front-end tooling (Vincent Audebert, Thibaud Colas)
- * Wagtailforms serve view now passes ``request.FILES``, for use in custom form handlers (LB (Ben Johnston))
- * Documents and images are now given new filenames on re-uploading, to avoid old versions being kept in cache (Bertrand Bordage)
- * Added custom 404 page for admin interface (Jack Paine)
- * Breadcrumb navigation now uses globe icon to indicate tree root, rather than home icon (Matt Westcott)
- * Wagtail now uses React 15.6.2 and above, released under the MIT license (Janneke Janssen)
- * User search in the Wagtail admin UI now works across multiple fields (Will Giddens)
- * ``Page.last_published_at`` is now a filterable field for search (Mikalai Radchuk)
- * Page search results and usage listings now include navigation links (Matt Westcott)
+* Front-end cache invalidator now supports purging URLs as a batch - see :ref:`frontend_cache_invalidating_urls` (Karl Hobley)
+* :doc:`Custom document model </advanced_topics/documents/custom_document_model>` is now documented (Emily Horsman)
+* Use minified versions of CSS in the admin by adding minification to the front-end tooling (Vincent Audebert, Thibaud Colas)
+* Wagtailforms serve view now passes ``request.FILES``, for use in custom form handlers (LB (Ben Johnston))
+* Documents and images are now given new filenames on re-uploading, to avoid old versions being kept in cache (Bertrand Bordage)
+* Added custom 404 page for admin interface (Jack Paine)
+* Breadcrumb navigation now uses globe icon to indicate tree root, rather than home icon (Matt Westcott)
+* Wagtail now uses React 15.6.2 and above, released under the MIT license (Janneke Janssen)
+* User search in the Wagtail admin UI now works across multiple fields (Will Giddens)
+* ``Page.last_published_at`` is now a filterable field for search (Mikalai Radchuk)
+* Page search results and usage listings now include navigation links (Matt Westcott)
 
 Bug fixes
 ~~~~~~~~~
 
- * "Open Link in New Tab" on a right arrow in page explorer should open page list (Emily Horsman)
- * Using ``order_by_relevance=False`` when searching with PostgreSQL now works (Mitchel Cabuloy)
- * Inline panel first and last sorting arrows correctly hidden in non-default tabs (Matt Westcott)
- * ``WAGTAILAPI_LIMIT_MAX`` now accepts None to disable limiting (jcronyn)
- * In PostgreSQL, new default ordering when ranking of objects is the same (Bertrand Bordage)
- * Fixed overlapping header elements on form submissions view on mobile (Jack Paine)
- * Fixed avatar position in footer on mobile (Jack Paine)
- * Custom document models no longer require their own post-delete signal handler (Gordon Pendleton)
- * Deletion of image / document files now only happens when database transaction has completed (Gordon Pendleton)
- * Fixed Node build scripts to work on Windows (Mikalai Radchuk)
- * Stop breadcrumb home icon from showing as ellipsis in Chrome 60 (Matt Westcott)
- * Prevent ``USE_THOUSAND_SEPARATOR = True`` from breaking the image focal point chooser (Sævar Öfjörð Magnússon)
- * Removed deprecated ``SessionAuthenticationMiddleware`` from project template (Samir Shah)
- * Custom display page titles defined with ``get_admin_display_title`` are now shown in search results (Ben Sturmfels, Matt Westcott)
- * Custom PageManagers now return the correct PageQuerySet subclass (Matt Westcott)
+* "Open Link in New Tab" on a right arrow in page explorer should open page list (Emily Horsman)
+* Using ``order_by_relevance=False`` when searching with PostgreSQL now works (Mitchel Cabuloy)
+* Inline panel first and last sorting arrows correctly hidden in non-default tabs (Matt Westcott)
+* ``WAGTAILAPI_LIMIT_MAX`` now accepts None to disable limiting (jcronyn)
+* In PostgreSQL, new default ordering when ranking of objects is the same (Bertrand Bordage)
+* Fixed overlapping header elements on form submissions view on mobile (Jack Paine)
+* Fixed avatar position in footer on mobile (Jack Paine)
+* Custom document models no longer require their own post-delete signal handler (Gordon Pendleton)
+* Deletion of image / document files now only happens when database transaction has completed (Gordon Pendleton)
+* Fixed Node build scripts to work on Windows (Mikalai Radchuk)
+* Stop breadcrumb home icon from showing as ellipsis in Chrome 60 (Matt Westcott)
+* Prevent ``USE_THOUSAND_SEPARATOR = True`` from breaking the image focal point chooser (Sævar Öfjörð Magnússon)
+* Removed deprecated ``SessionAuthenticationMiddleware`` from project template (Samir Shah)
+* Custom display page titles defined with ``get_admin_display_title`` are now shown in search results (Ben Sturmfels, Matt Westcott)
+* Custom PageManagers now return the correct PageQuerySet subclass (Matt Westcott)

+ 39 - 39
docs/releases/1.2.rst

@@ -39,8 +39,8 @@ Search API improvements
 
 Wagtail's image and document models now provide a ``search`` method on their QuerySets, making it easy to perform searches on filtered data sets. In addition, search methods now accept two new keyword arguments:
 
- * ``operator``, to determine whether multiple search terms will be treated as 'or' (any term may match) or 'and' (all terms must match);
- * ``order_by_relevance``, set to True (the default) to order by relevance or False to preserve the QuerySet's original ordering.
+* ``operator``, to determine whether multiple search terms will be treated as 'or' (any term may match) or 'and' (all terms must match);
+* ``order_by_relevance``, set to True (the default) to order by relevance or False to preserve the QuerySet's original ordering.
 
 See: :ref:`wagtailsearch_searching`
 
@@ -74,47 +74,47 @@ Wagtail now supports Python 3.5 when run in conjunction with Django 1.8.6 or lat
 Minor features
 ~~~~~~~~~~~~~~
 
- * WagtailRedirectMiddleware can now ignore the query string if there is no redirect that exactly matches it
- * Order of URL parameters now ignored by redirect middleware
- * Added SQL Server compatibility to image migration
- * Added ``class`` attributes to Wagtail rich text editor buttons to aid custom styling
- * Simplified body_class in default homepage template
- * page_published signal now called with the revision object that was published
- * Added a favicon to the admin interface, customisable by overriding the ``branding_favicon`` block (see :ref:`custom_branding`).
- * Added spinner animations to long-running form submissions
- * The EMBEDLY_KEY setting has been renamed to WAGTAILEMBEDS_EMBEDLY_KEY
- * StreamField blocks are now added automatically, without showing the block types menu, if only one block type exists (Alex Gleason)
- * The ``first_published_at`` and ``latest_revision_created_at`` fields on page models are now available as filter fields on search queries
- * Wagtail admin now standardises on a single thumbnail image size, to reduce the overhead of creating multiple renditions
- * Rich text fields now strip out HTML comments
- * Page editor form now sets ``enctype="multipart/form-data"`` as appropriate, allowing FileField to be used on page models (Petr Vacha)
- * Explorer navigation menu on a completely empty page tree now takes you to the root level, rather than doing nothing
- * Added animation and fixed display issues when focusing a rich text field (Alex Gleason)
- * Added a system check to warn if Pillow is compiled without JPEG / PNG support
- * Page chooser now prevents users from selecting the root node where this would be invalid
- * New translations for Dutch (Netherlands), Georgian, Swedish and Turkish (Turkey)
+* WagtailRedirectMiddleware can now ignore the query string if there is no redirect that exactly matches it
+* Order of URL parameters now ignored by redirect middleware
+* Added SQL Server compatibility to image migration
+* Added ``class`` attributes to Wagtail rich text editor buttons to aid custom styling
+* Simplified body_class in default homepage template
+* page_published signal now called with the revision object that was published
+* Added a favicon to the admin interface, customisable by overriding the ``branding_favicon`` block (see :ref:`custom_branding`).
+* Added spinner animations to long-running form submissions
+* The EMBEDLY_KEY setting has been renamed to WAGTAILEMBEDS_EMBEDLY_KEY
+* StreamField blocks are now added automatically, without showing the block types menu, if only one block type exists (Alex Gleason)
+* The ``first_published_at`` and ``latest_revision_created_at`` fields on page models are now available as filter fields on search queries
+* Wagtail admin now standardises on a single thumbnail image size, to reduce the overhead of creating multiple renditions
+* Rich text fields now strip out HTML comments
+* Page editor form now sets ``enctype="multipart/form-data"`` as appropriate, allowing FileField to be used on page models (Petr Vacha)
+* Explorer navigation menu on a completely empty page tree now takes you to the root level, rather than doing nothing
+* Added animation and fixed display issues when focusing a rich text field (Alex Gleason)
+* Added a system check to warn if Pillow is compiled without JPEG / PNG support
+* Page chooser now prevents users from selecting the root node where this would be invalid
+* New translations for Dutch (Netherlands), Georgian, Swedish and Turkish (Turkey)
 
 Bug fixes
 ~~~~~~~~~
 
- * Page slugs are no longer auto-updated from the page title if the page is already published
- * Deleting a page permission from the groups admin UI does not immediately submit the form
- * Wagtail userbar is shown on pages that do not pass a ``page`` variable to the template (e.g. because they override the ``serve`` method)
- * ``request.site`` now set correctly on page preview when the page is not in the default site
- * Project template no longer raises a deprecation warning (Maximilian Stauss)
- * ``PageManager.sibling_of(page)`` and ``PageManager.not_sibling_of(page)`` now default to inclusive (i.e. ``page`` is considered a sibling of itself), for consistency with other sibling methods
- * The "view live" button displayed after publishing a page now correctly reflects any changes made to the page slug (Ryan Pineo)
- * API endpoints now accept and ignore the ``_`` query parameter used by jQuery for cache-busting
- * Page slugs are no longer cut off when Unicode characters are expanded into multiple characters (Sævar Öfjörð Magnússon)
- * Searching a specific page model while filtering it by either ID or tree position no longer raises an error (Ashia Zawaduk)
- * Scrolling an over-long explorer menu no longer causes white background to show through (Alex Gleason)
- * Removed jitter when hovering over StreamField blocks (Alex Gleason)
- * Non-ASCII email addresses no longer throw errors when generating Gravatar URLs (Denis Voskvitsov, Kyle Stratis)
- * Dropdown for ``ForeignKey`` s are now styled consistently (Ashia Zawaduk)
- * Date choosers now appear on top of StreamField menus (Sergey Nikitin)
- * Fixed a migration error that was raised when block-updating from 0.8 to 1.1+
- * :meth:`Page.copy() <wagtail.core.models.Page.copy>` no longer breaks on models with a ``ClusterTaggableManager`` or ``ManyToManyField``
- * Validation errors when inserting an embed into a rich text area are now reported back to the editor
+* Page slugs are no longer auto-updated from the page title if the page is already published
+* Deleting a page permission from the groups admin UI does not immediately submit the form
+* Wagtail userbar is shown on pages that do not pass a ``page`` variable to the template (e.g. because they override the ``serve`` method)
+* ``request.site`` now set correctly on page preview when the page is not in the default site
+* Project template no longer raises a deprecation warning (Maximilian Stauss)
+* ``PageManager.sibling_of(page)`` and ``PageManager.not_sibling_of(page)`` now default to inclusive (i.e. ``page`` is considered a sibling of itself), for consistency with other sibling methods
+* The "view live" button displayed after publishing a page now correctly reflects any changes made to the page slug (Ryan Pineo)
+* API endpoints now accept and ignore the ``_`` query parameter used by jQuery for cache-busting
+* Page slugs are no longer cut off when Unicode characters are expanded into multiple characters (Sævar Öfjörð Magnússon)
+* Searching a specific page model while filtering it by either ID or tree position no longer raises an error (Ashia Zawaduk)
+* Scrolling an over-long explorer menu no longer causes white background to show through (Alex Gleason)
+* Removed jitter when hovering over StreamField blocks (Alex Gleason)
+* Non-ASCII email addresses no longer throw errors when generating Gravatar URLs (Denis Voskvitsov, Kyle Stratis)
+* Dropdown for ``ForeignKey`` s are now styled consistently (Ashia Zawaduk)
+* Date choosers now appear on top of StreamField menus (Sergey Nikitin)
+* Fixed a migration error that was raised when block-updating from 0.8 to 1.1+
+* :meth:`Page.copy() <wagtail.core.models.Page.copy>` no longer breaks on models with a ``ClusterTaggableManager`` or ``ManyToManyField``
+* Validation errors when inserting an embed into a rich text area are now reported back to the editor
 
 Upgrade considerations
 ======================

+ 42 - 42
docs/releases/1.3.rst

@@ -52,48 +52,48 @@ The search interface in the Wagtail admin now includes a toolbar to quickly swit
 Minor features
 ~~~~~~~~~~~~~~
 
- * Added ``WagtailPageTests``, a helper module to simplify writing tests for Wagtail sites. See :doc:`/advanced_topics/testing`
- * Added system checks to check the ``subpage_types`` and ``parent_page_types`` attributes of page models
- * Added ``WAGTAIL_PASSWORD_RESET_ENABLED`` setting to allow password resets to be disabled independently of the password management interface (John Draper)
- * Submit for moderation notification emails now include the editor name (Denis Voskvitsov)
- * Updated fonts for more comprehensive Unicode support
- * Added ``.alt`` attribute to image renditions
- * The default ``src``, ``width``, ``height`` and ``alt`` attributes can now be overridden by attributes passed to the ``{% image %}`` tag
- * Added keyboard shortcuts for preview and save in the page editor
- * Added ``Page`` methods ``can_exist_under``, ``can_create_at``, ``can_move_to`` for customising page type business rules
- * ``wagtailadmin.utils.send_mail`` now passes extra keyword arguments to Django's ``send_mail`` function (Matthew Downey)
- * ``page_unpublish`` signal is now fired for each page that was unpublished by a call to ``PageQuerySet.unpublish()``
- * Add ``get_upload_to`` method to ``AbstractImage``, to allow overriding the default image upload path (Ben Emery)
- * Notification emails are now sent per user (Matthew Downey)
- * Added the ability to override the default manager on Page models
- * Added an optional human-friendly ``site_name`` field to sites (Timo Rieber)
- * Added a system check to warn developers who use a custom Wagtail build but forgot to build the admin css
- * Added success message after updating image from the image upload view (Christian Peters)
- * Added a ``request.is_preview`` variable for templates to distinguish between previewing and live (Denis Voskvitsov)
- * 'Pages' link on site stats dashboard now links to the site homepage when only one site exists, rather than the root level
- * Added support for chaining multiple image operations on the ``{% image %}`` tag (Christian Peters)
- * New translations for Arabic, Latvian and Slovak
+* Added ``WagtailPageTests``, a helper module to simplify writing tests for Wagtail sites. See :doc:`/advanced_topics/testing`
+* Added system checks to check the ``subpage_types`` and ``parent_page_types`` attributes of page models
+* Added ``WAGTAIL_PASSWORD_RESET_ENABLED`` setting to allow password resets to be disabled independently of the password management interface (John Draper)
+* Submit for moderation notification emails now include the editor name (Denis Voskvitsov)
+* Updated fonts for more comprehensive Unicode support
+* Added ``.alt`` attribute to image renditions
+* The default ``src``, ``width``, ``height`` and ``alt`` attributes can now be overridden by attributes passed to the ``{% image %}`` tag
+* Added keyboard shortcuts for preview and save in the page editor
+* Added ``Page`` methods ``can_exist_under``, ``can_create_at``, ``can_move_to`` for customising page type business rules
+* ``wagtailadmin.utils.send_mail`` now passes extra keyword arguments to Django's ``send_mail`` function (Matthew Downey)
+* ``page_unpublish`` signal is now fired for each page that was unpublished by a call to ``PageQuerySet.unpublish()``
+* Add ``get_upload_to`` method to ``AbstractImage``, to allow overriding the default image upload path (Ben Emery)
+* Notification emails are now sent per user (Matthew Downey)
+* Added the ability to override the default manager on Page models
+* Added an optional human-friendly ``site_name`` field to sites (Timo Rieber)
+* Added a system check to warn developers who use a custom Wagtail build but forgot to build the admin css
+* Added success message after updating image from the image upload view (Christian Peters)
+* Added a ``request.is_preview`` variable for templates to distinguish between previewing and live (Denis Voskvitsov)
+* 'Pages' link on site stats dashboard now links to the site homepage when only one site exists, rather than the root level
+* Added support for chaining multiple image operations on the ``{% image %}`` tag (Christian Peters)
+* New translations for Arabic, Latvian and Slovak
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Images and page revisions created by a user are no longer deleted when the user is deleted (Rich Atkinson)
- * HTTP cache purge now works again on Python 2 (Mitchel Cabuloy)
- * Locked pages can no longer be unpublished (Alex Bridge)
- * Site records now implement ``get_by_natural_key``
- * Creating pages at the root level (and any other instances of the base ``Page`` model) now properly respects the ``parent_page_types`` setting
- * Settings menu now opens correctly from the page editor and styleguide views
- * ``subpage_types`` / ``parent_page_types`` business rules are now enforced when moving pages
- * Multi-word tags on images and documents are now correctly preserved as a single tag (LKozlowski)
- * Changed verbose names to start with lower case where necessary (Maris Serzans)
- * Invalid images no longer crash the image listing (Maris Serzans)
- * ``MenuItem`` ``url`` parameter can now take a lazy URL (Adon Metcalfe, rayrayndwiga)
- * Added missing translation tag to InlinePanel 'Add' button (jnns)
- * Added missing translation tag to 'Signing in...' button text (Eugene MechanisM)
- * Restored correct highlighting behaviour of rich text toolbar buttons
- * Rendering a missing image through ImageChooserBlock no longer breaks the whole page (Christian Peters)
- * Filtering by popular tag in the image chooser now works when using the database search backend
+* Images and page revisions created by a user are no longer deleted when the user is deleted (Rich Atkinson)
+* HTTP cache purge now works again on Python 2 (Mitchel Cabuloy)
+* Locked pages can no longer be unpublished (Alex Bridge)
+* Site records now implement ``get_by_natural_key``
+* Creating pages at the root level (and any other instances of the base ``Page`` model) now properly respects the ``parent_page_types`` setting
+* Settings menu now opens correctly from the page editor and styleguide views
+* ``subpage_types`` / ``parent_page_types`` business rules are now enforced when moving pages
+* Multi-word tags on images and documents are now correctly preserved as a single tag (LKozlowski)
+* Changed verbose names to start with lower case where necessary (Maris Serzans)
+* Invalid images no longer crash the image listing (Maris Serzans)
+* ``MenuItem`` ``url`` parameter can now take a lazy URL (Adon Metcalfe, rayrayndwiga)
+* Added missing translation tag to InlinePanel 'Add' button (jnns)
+* Added missing translation tag to 'Signing in...' button text (Eugene MechanisM)
+* Restored correct highlighting behaviour of rich text toolbar buttons
+* Rendering a missing image through ImageChooserBlock no longer breaks the whole page (Christian Peters)
+* Filtering by popular tag in the image chooser now works when using the database search backend
 
 
 Upgrade considerations
@@ -130,10 +130,10 @@ ContentType-returning methods in wagtailcore are deprecated
 
 The following internal functions and methods in ``wagtail.wagtailcore.models``, which return a list of ``ContentType`` objects, have been deprecated. Any uses of these in your code should be replaced by the corresponding new function which returns a list of model classes instead:
 
- * ``get_page_types()`` - replaced by ``get_page_models()``
- * ``Page.clean_subpage_types()`` - replaced by ``Page.clean_subpage_models()``
- * ``Page.clean_parent_page_types()`` - replaced by ``Page.clean_parent_page_models()``
- * ``Page.allowed_parent_page_types()`` - replaced by ``Page.allowed_parent_page_models()``
- * ``Page.allowed_subpage_types()`` - replaced by ``Page.allowed_subpage_models()``
+* ``get_page_types()`` - replaced by ``get_page_models()``
+* ``Page.clean_subpage_types()`` - replaced by ``Page.clean_subpage_models()``
+* ``Page.clean_parent_page_types()`` - replaced by ``Page.clean_parent_page_models()``
+* ``Page.allowed_parent_page_types()`` - replaced by ``Page.allowed_parent_page_models()``
+* ``Page.allowed_subpage_types()`` - replaced by ``Page.allowed_subpage_models()``
 
 In addition, note that these methods now return page types that are marked as ``is_creatable = False``, including the base ``Page`` class. (Abstract models are not included, as before.)

+ 1 - 1
docs/releases/1.4.1.rst

@@ -13,4 +13,4 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Fixed erroneous rendering of up arrow icons (Rob Moorman)
+* Fixed erroneous rendering of up arrow icons (Rob Moorman)

+ 5 - 5
docs/releases/1.4.2.rst

@@ -13,8 +13,8 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Streamfields no longer break on validation error
- * Number of validation errors in each tab in the editor is now correctly reported again
- * Userbar now opens on devices with both touch and mouse (Josh Barr)
- * ``wagtail.wagtailadmin.wagtail_hooks`` no longer calls ``static`` during app load, so you can use ``ManifestStaticFilesStorage`` without calling the ``collectstatic`` command
- * Fixed crash on page save when a custom ``Page`` edit handler has been specified using the ``edit_handler`` attribute (Tim Heap)
+* Streamfields no longer break on validation error
+* Number of validation errors in each tab in the editor is now correctly reported again
+* Userbar now opens on devices with both touch and mouse (Josh Barr)
+* ``wagtail.wagtailadmin.wagtail_hooks`` no longer calls ``static`` during app load, so you can use ``ManifestStaticFilesStorage`` without calling the ``collectstatic`` command
+* Fixed crash on page save when a custom ``Page`` edit handler has been specified using the ``edit_handler`` attribute (Tim Heap)

+ 1 - 1
docs/releases/1.4.3.rst

@@ -13,4 +13,4 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Fixed regression introduced in 1.4.2 which caused Wagtail to query the database during a system check (Tim Heap)
+* Fixed regression introduced in 1.4.2 which caused Wagtail to query the database during a system check (Tim Heap)

+ 11 - 11
docs/releases/1.4.4.rst

@@ -13,18 +13,18 @@ What's changed
 Translations
 ~~~~~~~~~~~~
 
- * New translation for Slovenian (Mitja Pagon)
+* New translation for Slovenian (Mitja Pagon)
 
 Bug fixes
 ~~~~~~~~~
 
- * The ``wagtailuserbar`` template tag now gracefully handles situations where the ``request`` object is not in the template context (Matt Westcott)
- * Meta classes on StreamField blocks now handle multiple inheritance correctly (Tim Heap)
- * Now user can upload images / documents only into permitted collection from choosers
- * Keyboard shortcuts for save / preview on the page editor no longer incorrectly trigger the "unsaved changes" message (Jack Paine / Matt Westcott)
- * Redirects no longer fail when both a site-specific and generic redirect exist for the same URL path (Nick Smith, João Luiz Lorencetti)
- * Wagtail now checks that Group is registered with the Django admin before unregistering it (Jason Morrison)
- * Previewing inaccessible pages no longer fails with ``ALLOWED_HOSTS = ['*']`` (Robert Rollins)
- * The submit button 'spinner' no longer activates if the form has client-side validation errors (Jack Paine, Matt Westcott)
- * Overriding ``MESSAGE_TAGS`` in project settings no longer causes messages in the Wagtail admin to lose their styling (Tim Heap)
- * Border added around explorer menu to stop it blending in with StreamField block listing; also fixes invisible explorer menu in Firefox 46 (Alex Gleason)
+* The ``wagtailuserbar`` template tag now gracefully handles situations where the ``request`` object is not in the template context (Matt Westcott)
+* Meta classes on StreamField blocks now handle multiple inheritance correctly (Tim Heap)
+* Now user can upload images / documents only into permitted collection from choosers
+* Keyboard shortcuts for save / preview on the page editor no longer incorrectly trigger the "unsaved changes" message (Jack Paine / Matt Westcott)
+* Redirects no longer fail when both a site-specific and generic redirect exist for the same URL path (Nick Smith, João Luiz Lorencetti)
+* Wagtail now checks that Group is registered with the Django admin before unregistering it (Jason Morrison)
+* Previewing inaccessible pages no longer fails with ``ALLOWED_HOSTS = ['*']`` (Robert Rollins)
+* The submit button 'spinner' no longer activates if the form has client-side validation errors (Jack Paine, Matt Westcott)
+* Overriding ``MESSAGE_TAGS`` in project settings no longer causes messages in the Wagtail admin to lose their styling (Tim Heap)
+* Border added around explorer menu to stop it blending in with StreamField block listing; also fixes invisible explorer menu in Firefox 46 (Alex Gleason)

+ 9 - 9
docs/releases/1.4.5.rst

@@ -13,12 +13,12 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Paste / drag operations done entirely with the mouse are now correctly picked up as edits within the rich text editor (Matt Fozard)
- * Logic for cancelling the "unsaved changes" check on form submission has been fixed to work cross-browser (Stephen Rice)
- * The "unsaved changes" confirmation was erroneously shown on IE / Firefox when previewing a page with validation errors (Matt Westcott)
- * The up / down / delete controls on the "Promoted search results" form no longer trigger a form submission (Matt Westcott)
- * Opening preview window no longer performs user-agent sniffing, and now works correctly on IE11 (Matt Westcott)
- * Tree paths are now correctly assigned when previewing a newly-created page underneath a parent with deleted children (Matt Westcott)
- * Added BASE_URL setting back to project template
- * Clearing the search box in the page chooser now returns the user to the browse view (Matt Westcott)
- * The above fix also fixed an issue where Internet Explorer got stuck in the search view upon opening the page chooser (Matt Westcott)
+* Paste / drag operations done entirely with the mouse are now correctly picked up as edits within the rich text editor (Matt Fozard)
+* Logic for cancelling the "unsaved changes" check on form submission has been fixed to work cross-browser (Stephen Rice)
+* The "unsaved changes" confirmation was erroneously shown on IE / Firefox when previewing a page with validation errors (Matt Westcott)
+* The up / down / delete controls on the "Promoted search results" form no longer trigger a form submission (Matt Westcott)
+* Opening preview window no longer performs user-agent sniffing, and now works correctly on IE11 (Matt Westcott)
+* Tree paths are now correctly assigned when previewing a newly-created page underneath a parent with deleted children (Matt Westcott)
+* Added BASE_URL setting back to project template
+* Clearing the search box in the page chooser now returns the user to the browse view (Matt Westcott)
+* The above fix also fixed an issue where Internet Explorer got stuck in the search view upon opening the page chooser (Matt Westcott)

+ 1 - 1
docs/releases/1.4.6.rst

@@ -13,4 +13,4 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)
+* Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)

+ 38 - 38
docs/releases/1.4.rst

@@ -64,49 +64,49 @@ Wagtail no longer depends on the `django-compressor <http://django-compressor.re
 Minor features
 ~~~~~~~~~~~~~~
 
- * The page search interface now searches all fields instead of just the title (Kait Crawford)
- * Snippets now support a custom ``edit_handler`` property; this can be used to implement a tabbed interface, for example. See :ref:`customising_the_tabbed_interface` (Mikalai Radchuk)
- * Date/time pickers now respect the locale's 'first day of week' setting (Peter Quade)
- * Refactored the way forms are constructed for the page editor, to allow custom forms to be used
- * Notification message on publish now indicates whether the page is being published now or scheduled for publication in future (Chris Rogers)
- * Server errors when uploading images / documents through the chooser modal are now reported back to the user (Nigel Fletton)
- * Added a hook :ref:`insert_global_admin_css` for inserting custom CSS throughout the admin backend (Tom Dyson)
- * Added a hook :ref:`construct_explorer_page_queryset` for customising the set of pages displayed in the page explorer
- * Page models now perform field validation, including testing slugs for uniqueness within a parent page, at the model level on saving
- * Page slugs are now auto-generated at the model level on page creation if one has not been specified explicitly
- * The ``Page`` model now has two new methods ``get_site()`` and ``get_url_parts()`` to aid with customising the page URL generation logic
- * Upgraded jQuery to 2.2.1 (Charlie Choiniere)
- * Multiple homepage summary items (``construct_homepage_summary_items`` hook) now better vertically spaced (Nicolas Kuttler)
- * Email notifications can now be sent in HTML format. See :ref:`email_notifications` (Mike Dingjan)
- * ``StreamBlock`` now has provision for throwing non-field-specific validation errors
- * Wagtail now works with Willow 0.3, which supports auto-correcting the orientation of images based on EXIF data
- * New translations for Hungarian, Swedish (Sweden) and Turkish
+* The page search interface now searches all fields instead of just the title (Kait Crawford)
+* Snippets now support a custom ``edit_handler`` property; this can be used to implement a tabbed interface, for example. See :ref:`customising_the_tabbed_interface` (Mikalai Radchuk)
+* Date/time pickers now respect the locale's 'first day of week' setting (Peter Quade)
+* Refactored the way forms are constructed for the page editor, to allow custom forms to be used
+* Notification message on publish now indicates whether the page is being published now or scheduled for publication in future (Chris Rogers)
+* Server errors when uploading images / documents through the chooser modal are now reported back to the user (Nigel Fletton)
+* Added a hook :ref:`insert_global_admin_css` for inserting custom CSS throughout the admin backend (Tom Dyson)
+* Added a hook :ref:`construct_explorer_page_queryset` for customising the set of pages displayed in the page explorer
+* Page models now perform field validation, including testing slugs for uniqueness within a parent page, at the model level on saving
+* Page slugs are now auto-generated at the model level on page creation if one has not been specified explicitly
+* The ``Page`` model now has two new methods ``get_site()`` and ``get_url_parts()`` to aid with customising the page URL generation logic
+* Upgraded jQuery to 2.2.1 (Charlie Choiniere)
+* Multiple homepage summary items (``construct_homepage_summary_items`` hook) now better vertically spaced (Nicolas Kuttler)
+* Email notifications can now be sent in HTML format. See :ref:`email_notifications` (Mike Dingjan)
+* ``StreamBlock`` now has provision for throwing non-field-specific validation errors
+* Wagtail now works with Willow 0.3, which supports auto-correcting the orientation of images based on EXIF data
+* New translations for Hungarian, Swedish (Sweden) and Turkish
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Custom page managers no longer raise an error when used on an abstract model
- * Wagtail's migrations are now all reversible (Benjamin Bach)
- * Deleting a page content type now preserves existing pages as basic Page instances, to prevent tree corruption
- * The ``Page.path`` field is now explicitly given the "C" collation on PostgreSQL to prevent tree ordering issues when using a database created with the Slovak locale
- * Wagtail's compiled static assets are now put into the correct directory on Windows (Aarni Koskela)
- * ``ChooserBlock`` now correctly handles models with primary keys other than ``id`` (alexpilot11)
- * Fixed typo in Wistia oEmbed pattern (Josh Hurd)
- * Added more accurate help text for the Administrator flag on user accounts (Matt Fozard)
- * Tags added on the multiple image uploader are now saved correctly
- * Documents created by a user are no longer deleted when the user is deleted
- * Fixed a crash in ``RedirectMiddleware`` when a middleware class before ``SiteMiddleware`` returns a response (Josh Schneier)
- * Fixed error retrieving the moderator list on pages that are covered by multiple moderator permission records (Matt Fozard)
- * Ordering pages in the explorer by reverse 'last updated' time now puts pages with no revisions at the top
- * WagtailTestUtils now works correctly on custom user models without a ``username`` field (Adam Bolfik)
- * Logging in to the admin as a user with valid credentials but no admin access permission now displays an error message, rather than rejecting the user silently
- * StreamBlock HTML rendering now handles non-ASCII characters correctly on Python 2 (Mikalai Radchuk)
- * Fixed a bug preventing pages with a ``OneToOneField`` from being copied (Liam Brenner)
- * SASS compilation errors during Wagtail development no longer cause exit of Gulp process, instead throws error to console and continues (Thomas Winter)
- * Explorer page listing now uses specific page models, so that custom URL schemes defined on Page subclasses are respected
- * Made settings menu clickable again in Firefox 46.0a2 (Juha Kujala)
- * User management index view no longer assumes the presence of ``username``, ``first_name``, ``last_name`` and ``email`` fields on the user model (Eirik Krogstad)
+* Custom page managers no longer raise an error when used on an abstract model
+* Wagtail's migrations are now all reversible (Benjamin Bach)
+* Deleting a page content type now preserves existing pages as basic Page instances, to prevent tree corruption
+* The ``Page.path`` field is now explicitly given the "C" collation on PostgreSQL to prevent tree ordering issues when using a database created with the Slovak locale
+* Wagtail's compiled static assets are now put into the correct directory on Windows (Aarni Koskela)
+* ``ChooserBlock`` now correctly handles models with primary keys other than ``id`` (alexpilot11)
+* Fixed typo in Wistia oEmbed pattern (Josh Hurd)
+* Added more accurate help text for the Administrator flag on user accounts (Matt Fozard)
+* Tags added on the multiple image uploader are now saved correctly
+* Documents created by a user are no longer deleted when the user is deleted
+* Fixed a crash in ``RedirectMiddleware`` when a middleware class before ``SiteMiddleware`` returns a response (Josh Schneier)
+* Fixed error retrieving the moderator list on pages that are covered by multiple moderator permission records (Matt Fozard)
+* Ordering pages in the explorer by reverse 'last updated' time now puts pages with no revisions at the top
+* WagtailTestUtils now works correctly on custom user models without a ``username`` field (Adam Bolfik)
+* Logging in to the admin as a user with valid credentials but no admin access permission now displays an error message, rather than rejecting the user silently
+* StreamBlock HTML rendering now handles non-ASCII characters correctly on Python 2 (Mikalai Radchuk)
+* Fixed a bug preventing pages with a ``OneToOneField`` from being copied (Liam Brenner)
+* SASS compilation errors during Wagtail development no longer cause exit of Gulp process, instead throws error to console and continues (Thomas Winter)
+* Explorer page listing now uses specific page models, so that custom URL schemes defined on Page subclasses are respected
+* Made settings menu clickable again in Firefox 46.0a2 (Juha Kujala)
+* User management index view no longer assumes the presence of ``username``, ``first_name``, ``last_name`` and ``email`` fields on the user model (Eirik Krogstad)
 
 
 Upgrade considerations

+ 10 - 10
docs/releases/1.5.1.rst

@@ -14,13 +14,13 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * When editing a document link in rich text, the document ID is no longer erroneously interpreted as a page ID (Stephen Rice)
- * Removing embedded media from rich text by mouse click action now gets correctly registered as a change to the field (Loic Teixeira)
- * Rich text editor is no longer broken in InlinePanels (Matt Westcott, Gagaro)
- * Rich text editor is no longer broken in settings (Matt Westcott)
- * Link tooltip now shows correct urls for newly inserted document links (Matt Westcott)
- * Now page chooser (in a rich text editor) opens up at the link's parent page, rather than at the page itself (Matt Westcott)
- * Reverted fix for explorer menu scrolling with page content, as it blocked access to menus that exceed screen height
- * Image listing in the image chooser no longer becomes unpaginated after an invalid upload form submission (Stephen Rice)
- * Confirmation message on the ModelAdmin delete view no longer errors if the model's string representation depends on the primary key (Yannick Chabbert)
- * Applied correct translation tags for 'permanent' / 'temporary' labels on redirects (Matt Westcott)
+* When editing a document link in rich text, the document ID is no longer erroneously interpreted as a page ID (Stephen Rice)
+* Removing embedded media from rich text by mouse click action now gets correctly registered as a change to the field (Loic Teixeira)
+* Rich text editor is no longer broken in InlinePanels (Matt Westcott, Gagaro)
+* Rich text editor is no longer broken in settings (Matt Westcott)
+* Link tooltip now shows correct urls for newly inserted document links (Matt Westcott)
+* Now page chooser (in a rich text editor) opens up at the link's parent page, rather than at the page itself (Matt Westcott)
+* Reverted fix for explorer menu scrolling with page content, as it blocked access to menus that exceed screen height
+* Image listing in the image chooser no longer becomes unpaginated after an invalid upload form submission (Stephen Rice)
+* Confirmation message on the ModelAdmin delete view no longer errors if the model's string representation depends on the primary key (Yannick Chabbert)
+* Applied correct translation tags for 'permanent' / 'temporary' labels on redirects (Matt Westcott)

+ 1 - 1
docs/releases/1.5.2.rst

@@ -14,4 +14,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Fixed regression in 1.5.1 on editing external links (Stephen Rice)
+* Fixed regression in 1.5.1 on editing external links (Stephen Rice)

+ 1 - 1
docs/releases/1.5.3.rst

@@ -13,4 +13,4 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)
+* Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)

+ 46 - 46
docs/releases/1.5.rst

@@ -53,60 +53,60 @@ Improvements to the "Image serve view"
 
 This view, which is used for requesting image thumbnails from an external app, has had some improvements made to it in this release.
 
- - A :ref:`"redirect" action <image_serve_view_redirect_action>` has been added which will redirect the user to where the resized image is hosted rather than serving it from the app. This may be beneficial for performance if the images are hosted externally (eg, S3)
- - It now takes an optional extra path component which can be used for appending a filename to the end of the URL
- - The key is now configurable on the view so you don't have to use your project's ``SECRET_KEY``
- - It's been refactored into a class based view and you can now create multiple serve views with different image models and/or keys
- - It now supports :ref:`serving image files using django-sendfile <image_serve_view_sendfile>` (Thanks to Yannick Chabbert for implementing this)
+- A :ref:`"redirect" action <image_serve_view_redirect_action>` has been added which will redirect the user to where the resized image is hosted rather than serving it from the app. This may be beneficial for performance if the images are hosted externally (eg, S3)
+- It now takes an optional extra path component which can be used for appending a filename to the end of the URL
+- The key is now configurable on the view so you don't have to use your project's ``SECRET_KEY``
+- It's been refactored into a class based view and you can now create multiple serve views with different image models and/or keys
+- It now supports :ref:`serving image files using django-sendfile <image_serve_view_sendfile>` (Thanks to Yannick Chabbert for implementing this)
 
 Minor features
 ~~~~~~~~~~~~~~
 
- * Password reset email now reminds the user of their username (Matt Westcott)
- * Added :ref:`jinja2 support <settings_tag_jinja2>` for the  ``settings`` template tag (Tim Heap)
- * Added 'revisions' action to pages list (Roel Bruggink)
- * Added a hook :ref:`insert_global_admin_js` for inserting custom JavaScript throughout the admin backend (Tom Dyson)
- * Recognise instagram embed URLs with ``www`` prefix (Matt Westcott)
- * The type of the ``search_fields`` attribute on ``Page`` models (and other searchable models) has changed from a tuple to a list (see upgrade consideration below) (Tim Heap)
- * Use `PasswordChangeForm` when user changes their password, requiring the user to enter their current password (Matthijs Melissen)
- * Highlight current day in date picker (Jonas Lergell)
- * Eliminated the deprecated ``register.assignment_tag`` on Django 1.9 (Josh Schneier)
- * Increased size of Save button on site settings (Liam Brenner)
- * Optimised Site.find_for_request to only perform one database query (Matthew Downey)
- * Notification messages on creating / editing sites now include the site name if specified (Chris Rogers)
- * Added ``--schema-only`` option to ``update_index`` management command
- * Added meaningful default icons to ``StreamField`` blocks (Benjamin Bach)
- * Added title text to action buttons in the page explorer (Liam Brenner)
- * Changed project template to explicitly import development settings via ``settings.dev`` (Tomas Olander)
- * Improved L10N and I18N for revisions list (Roel Bruggink)
- * The multiple image uploader now displays details of server errors (Nigel Fletton)
- * Added ``WAGTAIL_APPEND_SLASH`` setting to determine whether page URLs end in a trailing slash - see :ref:`append_slash` (Andrew Tork Baker)
- * Added auto resizing text field, richtext field, and snippet chooser to styleguide (Liam Brenner)
- * Support field widget media inside ``StreamBlock`` blocks (Karl Hobley)
- * Spinner was added to Save button on site settings (Liam Brenner)
- * Added success message after logout from Admin (Liam Brenner)
- * Added ``get_upload_to`` method to ``AbstractRendition`` which, when overridden, allows control over where image renditions are stored (Rob Moggach and Matt Westcott)
- * Added a mechanism to customise the add / edit user forms for custom user models - see :doc:`/advanced_topics/customisation/custom_user_models` (Nigel Fletton)
- * Added internal provision for swapping in alternative rich text editors (Karl Hobley)
+* Password reset email now reminds the user of their username (Matt Westcott)
+* Added :ref:`jinja2 support <settings_tag_jinja2>` for the  ``settings`` template tag (Tim Heap)
+* Added 'revisions' action to pages list (Roel Bruggink)
+* Added a hook :ref:`insert_global_admin_js` for inserting custom JavaScript throughout the admin backend (Tom Dyson)
+* Recognise instagram embed URLs with ``www`` prefix (Matt Westcott)
+* The type of the ``search_fields`` attribute on ``Page`` models (and other searchable models) has changed from a tuple to a list (see upgrade consideration below) (Tim Heap)
+* Use `PasswordChangeForm` when user changes their password, requiring the user to enter their current password (Matthijs Melissen)
+* Highlight current day in date picker (Jonas Lergell)
+* Eliminated the deprecated ``register.assignment_tag`` on Django 1.9 (Josh Schneier)
+* Increased size of Save button on site settings (Liam Brenner)
+* Optimised Site.find_for_request to only perform one database query (Matthew Downey)
+* Notification messages on creating / editing sites now include the site name if specified (Chris Rogers)
+* Added ``--schema-only`` option to ``update_index`` management command
+* Added meaningful default icons to ``StreamField`` blocks (Benjamin Bach)
+* Added title text to action buttons in the page explorer (Liam Brenner)
+* Changed project template to explicitly import development settings via ``settings.dev`` (Tomas Olander)
+* Improved L10N and I18N for revisions list (Roel Bruggink)
+* The multiple image uploader now displays details of server errors (Nigel Fletton)
+* Added ``WAGTAIL_APPEND_SLASH`` setting to determine whether page URLs end in a trailing slash - see :ref:`append_slash` (Andrew Tork Baker)
+* Added auto resizing text field, richtext field, and snippet chooser to styleguide (Liam Brenner)
+* Support field widget media inside ``StreamBlock`` blocks (Karl Hobley)
+* Spinner was added to Save button on site settings (Liam Brenner)
+* Added success message after logout from Admin (Liam Brenner)
+* Added ``get_upload_to`` method to ``AbstractRendition`` which, when overridden, allows control over where image renditions are stored (Rob Moggach and Matt Westcott)
+* Added a mechanism to customise the add / edit user forms for custom user models - see :doc:`/advanced_topics/customisation/custom_user_models` (Nigel Fletton)
+* Added internal provision for swapping in alternative rich text editors (Karl Hobley)
 
 Bug fixes
 ~~~~~~~~~
 
- * The currently selected day is now highlighted only in the correct month in date pickers (Jonas Lergell)
- * Fixed crash when an image without a source file was resized with the "dynamic serve view"
- * Registered settings admin menu items now show active correctly (Matthew Downey)
- * Direct usage of ``Document`` model replaced with ``get_document_model`` function in ``wagtail.contrib.wagtailmedusa`` and in ``wagtail.contrib.wagtailapi``
- * Failures on sending moderation notification emails now produce a warning, rather than crashing the admin page outright (Matt Fozard)
- * All admin forms that could potentially include file upload fields now specify ``multipart/form-data`` where appropriate (Tim Heap)
- * REM units in Wagtailuserbar caused incorrect spacing (Vincent Audebert)
- * Explorer menu no longer scrolls with page content (Vincent Audebert)
- * ``decorate_urlpatterns`` now uses ``functools.update_wrapper`` to keep view names and docstrings (Mario César)
- * StreamField block controls are no longer hidden by the StreamField menu when prepending a new block (Vincent Audebert)
- * Removed invalid use of ``__`` alias that prevented strings getting picked up for translation (Juha Yrjölä)
- * :ref:`Routable pages <routable_page_mixin>` without a main view no longer raise a ``TypeError`` (Bojan Mihelac)
- * Fixed UnicodeEncodeError in wagtailforms when downloading a CSV for a form containing non-ASCII field labels on Python 2 (Mikalai Radchuk)
- * Server errors during search indexing on creating / updating / deleting a model are now logged, rather than causing the overall operation to fail (Karl Hobley)
- * Objects are now correctly removed from search indexes on deletion (Karl Hobley)
+* The currently selected day is now highlighted only in the correct month in date pickers (Jonas Lergell)
+* Fixed crash when an image without a source file was resized with the "dynamic serve view"
+* Registered settings admin menu items now show active correctly (Matthew Downey)
+* Direct usage of ``Document`` model replaced with ``get_document_model`` function in ``wagtail.contrib.wagtailmedusa`` and in ``wagtail.contrib.wagtailapi``
+* Failures on sending moderation notification emails now produce a warning, rather than crashing the admin page outright (Matt Fozard)
+* All admin forms that could potentially include file upload fields now specify ``multipart/form-data`` where appropriate (Tim Heap)
+* REM units in Wagtailuserbar caused incorrect spacing (Vincent Audebert)
+* Explorer menu no longer scrolls with page content (Vincent Audebert)
+* ``decorate_urlpatterns`` now uses ``functools.update_wrapper`` to keep view names and docstrings (Mario César)
+* StreamField block controls are no longer hidden by the StreamField menu when prepending a new block (Vincent Audebert)
+* Removed invalid use of ``__`` alias that prevented strings getting picked up for translation (Juha Yrjölä)
+* :ref:`Routable pages <routable_page_mixin>` without a main view no longer raise a ``TypeError`` (Bojan Mihelac)
+* Fixed UnicodeEncodeError in wagtailforms when downloading a CSV for a form containing non-ASCII field labels on Python 2 (Mikalai Radchuk)
+* Server errors during search indexing on creating / updating / deleting a model are now logged, rather than causing the overall operation to fail (Karl Hobley)
+* Objects are now correctly removed from search indexes on deletion (Karl Hobley)
 
 
 Upgrade considerations

+ 39 - 39
docs/releases/1.6.rst

@@ -38,48 +38,48 @@ The explorer sidebar menu now limits the displayed pages to the ones the logged-
 Minor features
 ~~~~~~~~~~~~~~
 
- * Image upload form in image chooser now performs client side validation so that the selected file is not lost in the submission (Jack Paine)
- * oEmbed URL for audioBoom was updated (Janneke Janssen)
- * Remember tree location in page chooser when switching between Internal / External / Email link (Matt Westcott)
- * ``FieldRowPanel`` now creates equal-width columns automatically if ``col*`` classnames are not specified (Chris Rogers)
- * Form builder now validates against multiple fields with the same name (Richard McMillan)
- * The 'choices' field on the form builder no longer has a maximum length (Johannes Spielmann)
- * Multiple ChooserBlocks inside a StreamField are now prefetched in bulk, for improved performance (Michael van Tellingen, Roel Bruggink, Matt Westcott)
- * Added new EmailBlock and IntegerBlock (Oktay Altay)
- * Added a new FloatBlock, DecimalBlock and a RegexBlock (Oktay Altay, Andy Babic)
- * Wagtail version number is now shown on the settings menu (Chris Rogers)
- * Added a system check to validate that fields listed in ``search_fields`` are defined on the model (Josh Schneier)
- * Added formal APIs for customising the display of StructBlock forms within the page editor - see :ref:`custom_editing_interfaces_for_structblock` (Matt Westcott)
- * ``wagtailforms.models.AbstractEmailForm`` now supports multiple email recipients (Serafeim Papastefanos)
- * Added ability to delete users through Settings -> Users (Vincent Audebert; thanks also to Ludolf Takens and Tobias Schmidt for alternative implementations)
- * Page previews now pass additional HTTP headers, to simulate the page being viewed by the logged-in user and avoid clashes with middleware (Robert Rollins)
- * Added back buttons to page delete and unpublish confirmation screens (Matt Westcott)
- * Recognise Flickr embed URLs using HTTPS (Danielle Madeley)
- * Success message when publishing a page now correctly respects custom URLs defined on the specific page class (Chris Darko)
- * Required blocks inside StreamField are now indicated with asterisks (Stephen Rice)
+* Image upload form in image chooser now performs client side validation so that the selected file is not lost in the submission (Jack Paine)
+* oEmbed URL for audioBoom was updated (Janneke Janssen)
+* Remember tree location in page chooser when switching between Internal / External / Email link (Matt Westcott)
+* ``FieldRowPanel`` now creates equal-width columns automatically if ``col*`` classnames are not specified (Chris Rogers)
+* Form builder now validates against multiple fields with the same name (Richard McMillan)
+* The 'choices' field on the form builder no longer has a maximum length (Johannes Spielmann)
+* Multiple ChooserBlocks inside a StreamField are now prefetched in bulk, for improved performance (Michael van Tellingen, Roel Bruggink, Matt Westcott)
+* Added new EmailBlock and IntegerBlock (Oktay Altay)
+* Added a new FloatBlock, DecimalBlock and a RegexBlock (Oktay Altay, Andy Babic)
+* Wagtail version number is now shown on the settings menu (Chris Rogers)
+* Added a system check to validate that fields listed in ``search_fields`` are defined on the model (Josh Schneier)
+* Added formal APIs for customising the display of StructBlock forms within the page editor - see :ref:`custom_editing_interfaces_for_structblock` (Matt Westcott)
+* ``wagtailforms.models.AbstractEmailForm`` now supports multiple email recipients (Serafeim Papastefanos)
+* Added ability to delete users through Settings -> Users (Vincent Audebert; thanks also to Ludolf Takens and Tobias Schmidt for alternative implementations)
+* Page previews now pass additional HTTP headers, to simulate the page being viewed by the logged-in user and avoid clashes with middleware (Robert Rollins)
+* Added back buttons to page delete and unpublish confirmation screens (Matt Westcott)
+* Recognise Flickr embed URLs using HTTPS (Danielle Madeley)
+* Success message when publishing a page now correctly respects custom URLs defined on the specific page class (Chris Darko)
+* Required blocks inside StreamField are now indicated with asterisks (Stephen Rice)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Email templates and document uploader now support custom ``STATICFILES_STORAGE`` (Jonny Scholes)
- * Removed alignment options (deprecated in HTML and not rendered by Wagtail) from ``TableBlock`` context menu (Moritz Pfeiffer)
- * Fixed incorrect CSS path on ModelAdmin's "choose a parent page" view
- * Prevent empty redirect by overnormalisation
- * "Remove link" button in rich text editor didn't trigger "edit" event, leading to the change to sometimes not be persisted (Matt Westcott)
- * ``RichText`` values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage)
- * wagtailforms no longer assumes an .html extension when determining the landing page template filename (kakulukia)
- * Fixed styling glitch on bi-colour icon + text buttons in Chrome (Janneke Janssen)
- * StreamField can now be used in an InlinePanel (Gagaro)
- * StreamField block renderings using templates no longer undergo double escaping when using Jinja2 (Aymeric Augustin)
- * RichText objects no longer undergo double escaping when using Jinja2 (Aymeric Augustin, Matt Westcott)
- * Saving a page by pressing enter key no longer triggers a "Changes may not be saved message" (Sean Muck, Matt Westcott)
- * RoutablePageMixin no longer breaks in the presence of instance-only attributes such as those generated by FileFields (Fábio Macêdo Mendes)
- * The ``--schema-only`` flag on update_index no longer expects an argument (Karl Hobley)
- * Added file handling to support custom user add/edit forms with images/files (Eraldo Energy)
- * Placeholder text in modeladmin search now uses the correct template variable (Adriaan Tijsseling)
- * Fixed bad SQL syntax for updating URL paths on Microsoft SQL Server (Jesse Legg)
- * Added workaround for Django 1.10 bug https://code.djangoproject.com/ticket/27037 causing forms with file upload fields to fail validation (Matt Westcott)
+* Email templates and document uploader now support custom ``STATICFILES_STORAGE`` (Jonny Scholes)
+* Removed alignment options (deprecated in HTML and not rendered by Wagtail) from ``TableBlock`` context menu (Moritz Pfeiffer)
+* Fixed incorrect CSS path on ModelAdmin's "choose a parent page" view
+* Prevent empty redirect by overnormalisation
+* "Remove link" button in rich text editor didn't trigger "edit" event, leading to the change to sometimes not be persisted (Matt Westcott)
+* ``RichText`` values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage)
+* wagtailforms no longer assumes an .html extension when determining the landing page template filename (kakulukia)
+* Fixed styling glitch on bi-colour icon + text buttons in Chrome (Janneke Janssen)
+* StreamField can now be used in an InlinePanel (Gagaro)
+* StreamField block renderings using templates no longer undergo double escaping when using Jinja2 (Aymeric Augustin)
+* RichText objects no longer undergo double escaping when using Jinja2 (Aymeric Augustin, Matt Westcott)
+* Saving a page by pressing enter key no longer triggers a "Changes may not be saved message" (Sean Muck, Matt Westcott)
+* RoutablePageMixin no longer breaks in the presence of instance-only attributes such as those generated by FileFields (Fábio Macêdo Mendes)
+* The ``--schema-only`` flag on update_index no longer expects an argument (Karl Hobley)
+* Added file handling to support custom user add/edit forms with images/files (Eraldo Energy)
+* Placeholder text in modeladmin search now uses the correct template variable (Adriaan Tijsseling)
+* Fixed bad SQL syntax for updating URL paths on Microsoft SQL Server (Jesse Legg)
+* Added workaround for Django 1.10 bug https://code.djangoproject.com/ticket/27037 causing forms with file upload fields to fail validation (Matt Westcott)
 
 
 Upgrade considerations
@@ -90,8 +90,8 @@ Form builder ``FormField`` models require a migration
 
 There are some changes in the ``wagtailforms.models.AbstractFormField`` model:
 
- * The ``choices`` field has been changed from a ``CharField`` to a ``TextField``, to allow it to be of unlimited length;
- * The help text for the ``to_address`` field has been changed: it now gives more information on how to specify multiple addresses.
+* The ``choices`` field has been changed from a ``CharField`` to a ``TextField``, to allow it to be of unlimited length;
+* The help text for the ``to_address`` field has been changed: it now gives more information on how to specify multiple addresses.
 
 These changes require migration. If you are using the ``wagtailforms`` module in your project, you will need to run ``python manage.py makemigrations`` and ``python manage.py migrate`` after upgrading, in order to apply changes to your form page models.
 

+ 42 - 42
docs/releases/1.7.rst

@@ -22,7 +22,7 @@ See: :ref:`wagtailsearch_backends_elasticsearch`
 New image tag options for file type and JPEG compression level
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The ``{% image %}`` tag now supports extra parameters for specifying the image file type and JPEG compression level on a per-tag basis. See :ref:`output_image_format` and :ref:`jpeg_image_quality`. This feature was developed by Karl Hobley.
+The ``{% image %}`` tag now supports extra parameters for specifying the image file type and JPEG compression level on a per-tag basis. See :ref:`output_image_format` and :ref:`image_quality`. This feature was developed by Karl Hobley.
 
 
 AWS CloudFront support added to cache invalidation module
@@ -43,40 +43,40 @@ Unpublishing a page now gives the option to unpublish its subpages at the same t
 Minor features
 ~~~~~~~~~~~~~~
 
- * The ``|embed`` filter has been converted into a templatetag ``{% embed %}`` (Janneke Janssen)
- * The ``wagtailforms`` module now provides a ``FormSubmissionPanel`` for displaying details of form submissions; see :ref:`wagtailforms_formsubmissionpanel` for documentation. (João Luiz Lorencetti)
- * The Wagtail version number can now be obtained as a tuple using ``from wagtail import VERSION`` (Tim Heap)
- * ``send_mail`` logic has been moved from ``AbstractEmailForm.process_form_submission`` into ``AbstractEmailForm.send_mail``. Now it's easier to override this logic (Tim Leguijt)
- * Added ``before_create_page``, ``before_edit_page``, ``before_delete_page`` hooks (Karl Hobley)
- * Updated font sizes and colours to improve legibility of admin menu and buttons (Stein Strindhaug)
- * Added pagination to "choose destination" view when moving pages (Nick Smith, Žan Anderle)
- * Added ability to annotate search results with score - see :ref:`wagtailsearch_annotating_results_with_score` (Karl Hobley)
- * Added ability to limit access to form submissions - see :ref:`filter_form_submissions_for_user` (Mikalai Radchuk)
- * Added the ability to configure the number of days search logs are kept for, through the :ref:`WAGTAILSEARCH_HITS_MAX_AGE <wagtailsearch_hits_max_age>` setting (Stephen Rice)
- * ``SnippetChooserBlock`` now supports passing the model name as a string (Nick Smith)
- * Redesigned account settings / logout area in the sidebar for better clarity (Janneke Janssen)
- * Pillow's image optimisation is now applied when saving JPEG images (Karl Hobley)
+* The ``|embed`` filter has been converted into a templatetag ``{% embed %}`` (Janneke Janssen)
+* The ``wagtailforms`` module now provides a ``FormSubmissionPanel`` for displaying details of form submissions; see :ref:`wagtailforms_formsubmissionpanel` for documentation. (João Luiz Lorencetti)
+* The Wagtail version number can now be obtained as a tuple using ``from wagtail import VERSION`` (Tim Heap)
+* ``send_mail`` logic has been moved from ``AbstractEmailForm.process_form_submission`` into ``AbstractEmailForm.send_mail``. Now it's easier to override this logic (Tim Leguijt)
+* Added ``before_create_page``, ``before_edit_page``, ``before_delete_page`` hooks (Karl Hobley)
+* Updated font sizes and colours to improve legibility of admin menu and buttons (Stein Strindhaug)
+* Added pagination to "choose destination" view when moving pages (Nick Smith, Žan Anderle)
+* Added ability to annotate search results with score - see :ref:`wagtailsearch_annotating_results_with_score` (Karl Hobley)
+* Added ability to limit access to form submissions - see :ref:`filter_form_submissions_for_user` (Mikalai Radchuk)
+* Added the ability to configure the number of days search logs are kept for, through the :ref:`WAGTAILSEARCH_HITS_MAX_AGE <wagtailsearch_hits_max_age>` setting (Stephen Rice)
+* ``SnippetChooserBlock`` now supports passing the model name as a string (Nick Smith)
+* Redesigned account settings / logout area in the sidebar for better clarity (Janneke Janssen)
+* Pillow's image optimisation is now applied when saving JPEG images (Karl Hobley)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Migrations for wagtailcore and project template are now reversible (Benjamin Bach)
- * Migrations no longer depend on wagtailcore and taggit's ``__latest__`` migration, logically preventing those apps from receiving new migrations (Matt Westcott)
- * The default image format label text ('Full width', 'Left-aligned', 'Right-aligned') is now localised (Mikalai Radchuk)
- * Text on the front-end 'password required' form is now marked for translation (Janneke Janssen)
- * Text on the page view restriction form is now marked for translation (Luiz Boaretto)
- * Fixed toggle behaviour of userbar on mobile (Robert Rollins)
- * Image rendition / document file deletion now happens on a post_delete signal, so that files are not lost if the deletion does not proceed (Janneke Janssen)
- * "Your recent edits" list on dashboard no longer leaves out pages that another user has subsequently edited (Michael Cordover, Kees Hink, João Luiz Lorencetti)
- * ``InlinePanel`` now accepts a ``classname`` parameter as per the documentation (emg36, Matt Westcott)
- * Disabled use of escape key to revert content of rich text fields, which could cause accidental data loss (Matt Westcott)
- * Setting ``USE_THOUSAND_SEPARATOR = True`` no longer breaks the rendering of numbers in JS code for InlinePanel (Mattias Loverot, Matt Westcott)
- * Images / documents pagination now preserves GET parameters (Bojan Mihelac)
- * Wagtail's UserProfile model now sets a related_name of ``wagtail_userprofile`` to avoid naming collisions with other user profile models (Matt Westcott)
- * Non-text content is now preserved when adding or editing a link within rich text (Matt Westcott)
- * Fixed preview when ``SECURE_SSL_REDIRECT = True`` (Aymeric Augustin)
- * Prevent hang when truncating an image filename without an extension (Ricky Robinett)
+* Migrations for wagtailcore and project template are now reversible (Benjamin Bach)
+* Migrations no longer depend on wagtailcore and taggit's ``__latest__`` migration, logically preventing those apps from receiving new migrations (Matt Westcott)
+* The default image format label text ('Full width', 'Left-aligned', 'Right-aligned') is now localised (Mikalai Radchuk)
+* Text on the front-end 'password required' form is now marked for translation (Janneke Janssen)
+* Text on the page view restriction form is now marked for translation (Luiz Boaretto)
+* Fixed toggle behaviour of userbar on mobile (Robert Rollins)
+* Image rendition / document file deletion now happens on a post_delete signal, so that files are not lost if the deletion does not proceed (Janneke Janssen)
+* "Your recent edits" list on dashboard no longer leaves out pages that another user has subsequently edited (Michael Cordover, Kees Hink, João Luiz Lorencetti)
+* ``InlinePanel`` now accepts a ``classname`` parameter as per the documentation (emg36, Matt Westcott)
+* Disabled use of escape key to revert content of rich text fields, which could cause accidental data loss (Matt Westcott)
+* Setting ``USE_THOUSAND_SEPARATOR = True`` no longer breaks the rendering of numbers in JS code for InlinePanel (Mattias Loverot, Matt Westcott)
+* Images / documents pagination now preserves GET parameters (Bojan Mihelac)
+* Wagtail's UserProfile model now sets a related_name of ``wagtail_userprofile`` to avoid naming collisions with other user profile models (Matt Westcott)
+* Non-text content is now preserved when adding or editing a link within rich text (Matt Westcott)
+* Fixed preview when ``SECURE_SSL_REDIRECT = True`` (Aymeric Augustin)
+* Prevent hang when truncating an image filename without an extension (Ricky Robinett)
 
 
 Upgrade considerations
@@ -109,24 +109,24 @@ Custom image models require a data migration for the new ``filter_spec`` field
 
 The data model for image renditions will be changed in Wagtail 1.8 to eliminate ``Filter`` as a model. Wagtail sites using a custom image model (see :ref:`custom_image_model`) need to have a schema and data migration in place prior to upgrading to Wagtail 1.8. To create these migrations:
 
- * Run ``manage.py makemigrations`` to create the schema migration
- * Run ``manage.py makemigrations --empty myapp`` (replacing ``myapp`` with the name of the app containing the custom image model) to create an empty migration
- * Edit the created migration to contain:
+* Run ``manage.py makemigrations`` to create the schema migration
+* Run ``manage.py makemigrations --empty myapp`` (replacing ``myapp`` with the name of the app containing the custom image model) to create an empty migration
+* Edit the created migration to contain:
 
-   .. code-block:: python
+  .. code-block:: python
 
-       from wagtail.wagtailimages.utils import get_fill_filter_spec_migrations
+      from wagtail.wagtailimages.utils import get_fill_filter_spec_migrations
 
-   and, for the ``operations`` list:
+  and, for the ``operations`` list:
 
-   .. code-block:: python
+  .. code-block:: python
 
-       forward, reverse = get_fill_filter_spec_migrations('myapp', 'CustomRendition')
-       operations = [
-           migrations.RunPython(forward, reverse),
-       ]
+      forward, reverse = get_fill_filter_spec_migrations('myapp', 'CustomRendition')
+      operations = [
+          migrations.RunPython(forward, reverse),
+      ]
 
-   replacing ``myapp`` and ``CustomRendition`` with the app and model name for the custom rendition model.
+  replacing ``myapp`` and ``CustomRendition`` with the app and model name for the custom rendition model.
 
 
 ``embed`` template filter is now a template tag

+ 1 - 1
docs/releases/1.8.1.rst

@@ -13,4 +13,4 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Reduced ``Rendition.focal_point_key`` field length to prevent migration failure when upgrading to Wagtail 1.8 on MySQL with ``utf8`` character encoding (Andy Chosak, Matt Westcott)
+* Reduced ``Rendition.focal_point_key`` field length to prevent migration failure when upgrading to Wagtail 1.8 on MySQL with ``utf8`` character encoding (Andy Chosak, Matt Westcott)

+ 3 - 3
docs/releases/1.8.2.rst

@@ -13,6 +13,6 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Removed erroneous ``|safe`` filter from search results template in project template (Karl Hobley)
- * Avoid indexing unsaved field content on ``save(update_fields=[...])`` operations (Matt Westcott)
- * Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
+* Removed erroneous ``|safe`` filter from search results template in project template (Karl Hobley)
+* Avoid indexing unsaved field content on ``save(update_fields=[...])`` operations (Matt Westcott)
+* Prevent pages from being recursively copied into themselves (Matheus Bratfisch)

+ 35 - 35
docs/releases/1.8.rst

@@ -54,44 +54,44 @@ The ":doc:`Your first Wagtail site </getting_started/tutorial>`" tutorial has be
 Other features
 ~~~~~~~~~~~~~~
 
- * Added support of a custom ``edit_handler`` for site settings. See :ref:`docs for the site settings module <edit_handlers_settings>`. (Axel Haustant)
- * Added ``get_landing_page_template`` getter method to ``AbstractForm`` (Gagaro)
- * Added ``Page.get_admin_display_title`` method to override how the title is displayed in the admin (Henk-Jan van Hasselaar)
- * Added support for specifying custom HTML attributes for table rows on ModelAdmin index pages. See :ref:`modeladmin_get_extra_attrs_for_row` (Andy Babic)
- * Added ``first_common_ancestor`` method to ``PageQuerySet`` (Tim Heap)
- * Page chooser now opens at the deepest ancestor page that covers all the pages of the required page type (Tim Heap)
- * ``PageChooserBlock`` now accepts a ``target_model`` option to specify the required page type (Tim Heap)
- * Modeladmin forms now respect ``fields`` / ``exclude`` options passed on custom model forms (Thejaswi Puthraya)
- * Added new StreamField block type ``StaticBlock`` for blocks that occupy a position in a stream but otherwise have no configuration; see :ref:`streamfield_staticblock` (Benoît Vogel)
- * Added new StreamField block type ``BlockQuoteBlock`` (Scot Hacker)
- * Updated Cloudflare cache module to use the v4 API (Albert O'Connor)
- * Added ``exclude_from_explorer`` attribute to the ``ModelAdmin`` class to allow hiding instances of a page type from Wagtail's explorer views (Andy Babic)
- * Added ``above_login``, ``below_login``, ``fields`` and ``login_form`` customisation blocks to the login page template - see :doc:`/advanced_topics/customisation/admin_templates` (Tim Heap)
- * ``ChoiceBlock`` now accepts a callable as the choices list (Mikalai Radchuk)
- * Redundant action buttons are now omitted from the root page in the explorer (Nick Smith)
- * Locked pages are now disabled from editing at the browser level (Edd Baldry)
- * Added :meth:`wagtail.core.query.PageQuerySet.in_site` method for filtering page QuerySets to pages within the specified site (Chris Rogers)
- * Added the ability to override the default index settings for Elasticsearch. See :ref:`wagtailsearch_backends_elasticsearch` (PyMan Claudio Marinozzi)
- * Extra options for the Elasticsearch constructor should be now defined with the new key ``OPTIONS`` of the ``WAGTAILSEARCH_BACKENDS`` setting (PyMan Claudio Marinozzi)
+* Added support of a custom ``edit_handler`` for site settings. See :ref:`docs for the site settings module <edit_handlers_settings>`. (Axel Haustant)
+* Added ``get_landing_page_template`` getter method to ``AbstractForm`` (Gagaro)
+* Added ``Page.get_admin_display_title`` method to override how the title is displayed in the admin (Henk-Jan van Hasselaar)
+* Added support for specifying custom HTML attributes for table rows on ModelAdmin index pages. See :ref:`modeladmin_get_extra_attrs_for_row` (Andy Babic)
+* Added ``first_common_ancestor`` method to ``PageQuerySet`` (Tim Heap)
+* Page chooser now opens at the deepest ancestor page that covers all the pages of the required page type (Tim Heap)
+* ``PageChooserBlock`` now accepts a ``target_model`` option to specify the required page type (Tim Heap)
+* Modeladmin forms now respect ``fields`` / ``exclude`` options passed on custom model forms (Thejaswi Puthraya)
+* Added new StreamField block type ``StaticBlock`` for blocks that occupy a position in a stream but otherwise have no configuration; see :ref:`streamfield_staticblock` (Benoît Vogel)
+* Added new StreamField block type ``BlockQuoteBlock`` (Scot Hacker)
+* Updated Cloudflare cache module to use the v4 API (Albert O'Connor)
+* Added ``exclude_from_explorer`` attribute to the ``ModelAdmin`` class to allow hiding instances of a page type from Wagtail's explorer views (Andy Babic)
+* Added ``above_login``, ``below_login``, ``fields`` and ``login_form`` customisation blocks to the login page template - see :doc:`/advanced_topics/customisation/admin_templates` (Tim Heap)
+* ``ChoiceBlock`` now accepts a callable as the choices list (Mikalai Radchuk)
+* Redundant action buttons are now omitted from the root page in the explorer (Nick Smith)
+* Locked pages are now disabled from editing at the browser level (Edd Baldry)
+* Added :meth:`wagtail.core.query.PageQuerySet.in_site` method for filtering page QuerySets to pages within the specified site (Chris Rogers)
+* Added the ability to override the default index settings for Elasticsearch. See :ref:`wagtailsearch_backends_elasticsearch` (PyMan Claudio Marinozzi)
+* Extra options for the Elasticsearch constructor should be now defined with the new key ``OPTIONS`` of the ``WAGTAILSEARCH_BACKENDS`` setting (PyMan Claudio Marinozzi)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * ``AbstractForm`` now respects custom ``get_template`` methods on the page model (Gagaro)
- * Use specific page model for the parent page in the explore index (Gagaro)
- * Remove responsive styles in embed when there is no ratio available (Gagaro)
- * Parent page link in page search modal no longer disappears on hover (Dan Braghis)
- * ModelAdmin views now consistently call ``get_context_data`` (Andy Babic)
- * Header for search results on the redirects index page now shows the correct count when the listing is paginated (Nick Smith)
- * ``set_url_paths`` management command is now compatible with Django 1.10 (Benjamin Bach)
- * Form builder email notifications now output multiple values correctly (Sævar Öfjörð Magnússon)
- * Closing 'more' dropdown on explorer no longer jumps to the top of the page (Ducky)
- * Users with only publish permission are no longer given implicit permission to delete pages (Matt Westcott)
- * ``search_garbage_collect`` management command now works when wagtailsearchpromotions is not installed (Morgan Aubert)
- * ``wagtail.contrib.settings`` context processor no longer fails when ``request.site`` is unavailable (Diederik van der Boor)
- * ``TableBlock`` content is now indexed for search (Morgan Aubert)
- * ``Page.copy()`` is now marked as ``alters_data``, to prevent template code from triggering it (Diederik van der Boor)
+* ``AbstractForm`` now respects custom ``get_template`` methods on the page model (Gagaro)
+* Use specific page model for the parent page in the explore index (Gagaro)
+* Remove responsive styles in embed when there is no ratio available (Gagaro)
+* Parent page link in page search modal no longer disappears on hover (Dan Braghis)
+* ModelAdmin views now consistently call ``get_context_data`` (Andy Babic)
+* Header for search results on the redirects index page now shows the correct count when the listing is paginated (Nick Smith)
+* ``set_url_paths`` management command is now compatible with Django 1.10 (Benjamin Bach)
+* Form builder email notifications now output multiple values correctly (Sævar Öfjörð Magnússon)
+* Closing 'more' dropdown on explorer no longer jumps to the top of the page (Ducky)
+* Users with only publish permission are no longer given implicit permission to delete pages (Matt Westcott)
+* ``search_garbage_collect`` management command now works when wagtailsearchpromotions is not installed (Morgan Aubert)
+* ``wagtail.contrib.settings`` context processor no longer fails when ``request.site`` is unavailable (Diederik van der Boor)
+* ``TableBlock`` content is now indexed for search (Morgan Aubert)
+* ``Page.copy()`` is now marked as ``alters_data``, to prevent template code from triggering it (Diederik van der Boor)
 
 
 Upgrade considerations
@@ -121,8 +121,8 @@ You will then be able to run ``manage.py makemigrations`` and ``manage.py migrat
 
 Additionally, third-party code that accesses the Filter and Rendition models directly should note the following and make updates where applicable:
 
- * ``Filter`` will no longer be a Django model as of Wagtail 1.9, and as such, ORM operations on it (such as ``save()`` and ``Filter.objects``) are deprecated. It should be instantiated and used as an in-memory object instead - for example, ``flt, created = Filter.objects.get_or_create(spec='fill-100x100')`` should become ``flt = Filter(spec='fill-100x100')``.
- * The ``filter`` field of Rendition models is no longer in use; lookups should instead be performed on the ``filter_spec`` field, which contains a filter spec string such as ``'fill-100x100'``.
+* ``Filter`` will no longer be a Django model as of Wagtail 1.9, and as such, ORM operations on it (such as ``save()`` and ``Filter.objects``) are deprecated. It should be instantiated and used as an in-memory object instead - for example, ``flt, created = Filter.objects.get_or_create(spec='fill-100x100')`` should become ``flt = Filter(spec='fill-100x100')``.
+* The ``filter`` field of Rendition models is no longer in use; lookups should instead be performed on the ``filter_spec`` field, which contains a filter spec string such as ``'fill-100x100'``.
 
 
 ``wagtail.wagtailimages.models.get_image_model`` has moved

+ 2 - 2
docs/releases/1.9.1.rst

@@ -13,5 +13,5 @@ What's changed
 Bug fixes
 ~~~~~~~~~
 
- * Removed erroneous ``|safe`` filter from search results template in project template (Karl Hobley)
- * Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
+* Removed erroneous ``|safe`` filter from search results template in project template (Karl Hobley)
+* Prevent pages from being recursively copied into themselves (Matheus Bratfisch)

+ 14 - 14
docs/releases/1.9.rst

@@ -47,24 +47,24 @@ The welcome message on the admin dashboard has been updated to be more suitable
 Other features
 ~~~~~~~~~~~~~~
 
- * Changed text of "Draft" and "Live" buttons to "View draft" and "View live" (Dan Braghis)
- * Added ``get_api_representation`` method to streamfield blocks allowing the JSON representation in the API to be customised (Marco Fucci)
- * Added :ref:`before_copy_page` and :ref:`after_copy_page` hooks (Matheus Bratfisch)
- * View live / draft links in the admin now consistently open in a new window (Marco Fucci)
- * ``ChoiceBlock`` now omits the blank option if the block is required and has a default value (Andreas Nüßlein)
- * The ``add_subpage`` view now maintains a ``next`` URL parameter to specify where to redirect to after completing page creation (Robert Rollins)
- * The ``wagtailforms`` module now allows to define custom form submission model, add custom data to CSV export and some other customisations. See :doc:`/reference/contrib/forms/customisation` (Mikalai Radchuk)
- * The Webpack configuration is now in a subfolder to declutter the project root, and uses environment-specific configurations for smaller bundles in production and easier debugging in development (Janneke Janssen, Thibaud Colas)
- * Added page titles to title text on action buttons in the explorer, for improved accessibility (Matt Westcott)
+* Changed text of "Draft" and "Live" buttons to "View draft" and "View live" (Dan Braghis)
+* Added ``get_api_representation`` method to streamfield blocks allowing the JSON representation in the API to be customised (Marco Fucci)
+* Added :ref:`before_copy_page` and :ref:`after_copy_page` hooks (Matheus Bratfisch)
+* View live / draft links in the admin now consistently open in a new window (Marco Fucci)
+* ``ChoiceBlock`` now omits the blank option if the block is required and has a default value (Andreas Nüßlein)
+* The ``add_subpage`` view now maintains a ``next`` URL parameter to specify where to redirect to after completing page creation (Robert Rollins)
+* The ``wagtailforms`` module now allows to define custom form submission model, add custom data to CSV export and some other customisations. See :doc:`/reference/contrib/forms/customisation` (Mikalai Radchuk)
+* The Webpack configuration is now in a subfolder to declutter the project root, and uses environment-specific configurations for smaller bundles in production and easier debugging in development (Janneke Janssen, Thibaud Colas)
+* Added page titles to title text on action buttons in the explorer, for improved accessibility (Matt Westcott)
 
 Bug fixes
 ~~~~~~~~~
 
- * Help text for StreamField is now visible and does not cover block controls (Stein Strindhaug)
- * "X minutes ago" timestamps are now marked for translation (Janneke Janssen, Matt Westcott)
- * Avoid indexing unsaved field content on `save(update_fields=[...])` operations (Matt Westcott)
- * Corrected ordering of arguments passed to ModelAdmin ``get_extra_class_names_for_field_col`` / ``get_extra_attrs_for_field_col`` methods (Andy Babic)
- * ``pageurl`` / ``slugurl`` tags now function when request.site is not available (Tobias McNulty, Matt Westcott)
+* Help text for StreamField is now visible and does not cover block controls (Stein Strindhaug)
+* "X minutes ago" timestamps are now marked for translation (Janneke Janssen, Matt Westcott)
+* Avoid indexing unsaved field content on `save(update_fields=[...])` operations (Matt Westcott)
+* Corrected ordering of arguments passed to ModelAdmin ``get_extra_class_names_for_field_col`` / ``get_extra_attrs_for_field_col`` methods (Andy Babic)
+* ``pageurl`` / ``slugurl`` tags now function when request.site is not available (Tobias McNulty, Matt Westcott)
 
 
 Upgrade considerations

+ 7 - 7
docs/releases/2.0.1.rst

@@ -10,14 +10,14 @@ Wagtail 2.0.1 release notes
 What's new
 ==========
 
- * Added error notification when running the ``wagtail`` command on Python <3.4 (Matt Westcott)
- * Added error handling to the Draftail editor (Thibaud Colas)
+* Added error notification when running the ``wagtail`` command on Python <3.4 (Matt Westcott)
+* Added error handling to the Draftail editor (Thibaud Colas)
 
 Bug fixes
 ~~~~~~~~~
 
- * Draftail now supports features specified via the ``WAGTAILADMIN_RICH_TEXT_EDITORS`` setting (Todd Dembrey)
- * Password reset form no longer indicates whether the email is recognised, as per standard Django behaviour (Bertrand Bordage)
- * ``UserAttributeSimilarityValidator`` is now correctly enforced on user creation / editing forms (Tim Heap)
- * Editing setting object with no site configured no longer crashes (Harm Zeinstra)
- * Creating a new object with inlines while mandatory fields are empty no longer crashes (Bertrand Bordage)
+* Draftail now supports features specified via the ``WAGTAILADMIN_RICH_TEXT_EDITORS`` setting (Todd Dembrey)
+* Password reset form no longer indicates whether the email is recognised, as per standard Django behaviour (Bertrand Bordage)
+* ``UserAttributeSimilarityValidator`` is now correctly enforced on user creation / editing forms (Tim Heap)
+* Editing setting object with no site configured no longer crashes (Harm Zeinstra)
+* Creating a new object with inlines while mandatory fields are empty no longer crashes (Bertrand Bordage)

+ 3 - 3
docs/releases/2.0.2.rst

@@ -13,6 +13,6 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
- * Fix usage URL on the document edit page (Jérôme Lebleu)
- * Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
+* Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
+* Fix usage URL on the document edit page (Jérôme Lebleu)
+* Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)

+ 123 - 123
docs/releases/2.0.rst

@@ -37,79 +37,79 @@ The behaviour of scheduled publishing has been revised so that pages are no long
 Other features
 ~~~~~~~~~~~~~~
 
- * Moved Wagtail API v1 implementation (``wagtail.contrib.api``) to an `external app <https://github.com/wagtail/wagtailapi_legacy>`_ (Karl Hobley)
- * The page chooser now searches all fields of a page, instead of just the title (Bertrand Bordage)
- * Implement ordering by date in form submission view (LB (Ben Johnston))
- * Elasticsearch scroll API is now used when fetching more than 100 search results (Karl Hobley)
- * Added hidden field to the form builder (Ross Crawford-d'Heureuse)
- * Usage count now shows on delete confirmation page when WAGTAIL_USAGE_COUNT_ENABLED is active (Kees Hink)
- * Added usage count to snippets (Kees Hink)
- * Moved usage count to the sidebar on the edit page (Kees Hink)
- * Explorer menu now reflects customisations to the page listing made via the `construct_explorer_page_queryset` hook and `ModelAdmin.exclude_from_explorer` property (Tim Heap)
- * "Choose another image" button changed to "Change image" to avoid ambiguity (Edd Baldry)
- * Added hooks ``before_create_user``, ``after_create_user``, ``before_delete_user``, ``after_delete_user``, ``before_edit_user``, ``after_edit_user`` (Jon Carmack)
- * Added ``exclude_fields_in_copy`` property to Page to define fields that should not be included on page copy (LB (Ben Johnston))
- * Improved error message on incorrect ``{% image %}`` tag syntax (LB (Ben Johnston))
- * Optimized preview data storage (Bertrand Bordage)
- * Added ``render_landing_page`` method to ``AbstractForm`` to be easily overridden and pass ``form_submission`` to landing page context (Stein Strindhaug)
- * Added ``heading`` kwarg to ``InlinePanel`` to allow heading to be set independently of button label (Adrian Turjak)
- * The value type returned from a ``StructBlock`` can now be customised. See :ref:`custom_value_class_for_structblock` (LB (Ben Johnston))
- * Added ``bgcolor`` image operation (Karl Hobley)
- * Added ``WAGTAILADMIN_USER_LOGIN_FORM`` setting for overriding the admin login form (Mike Dingjan)
- * Snippets now support custom primary keys (Sævar Öfjörð Magnússon)
- * Upgraded jQuery to version 3.2.1 (Janneke Janssen)
- * Update autoprefixer configuration to better match browser support targets (Janneke Janssen)
- * Update React and related dependencies to latest versions (Janneke Janssen, Hugo van den Berg)
- * Remove Hallo editor ``.richtext`` CSS class in favour of more explicit extension points (Thibaud Colas)
- * Updated documentation styling (LB (Ben Johnston))
- * Rich text fields now take feature lists into account when whitelisting HTML elements (Matt Westcott)
- * FormPage lists and Form submission lists in admin now use class based views for easy overriding (Johan Arensman)
- * Form submission csv exports now have the export date in the filename and can be customized (Johan Arensman)
- * FormBuilder class now uses bound methods for field generation, adding custom fields is now easier and documented (LB (Ben Johnston))
- * Added ``WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS`` setting to determine whether superusers are included in moderation email notifications (Bruno Alla)
- * Added a basic Dockerfile to the project template (Tom Dyson)
- * StreamField blocks now allow custom ``get_template`` methods for overriding templates in instances (Christopher Bledsoe)
- * Simplified edit handler API (Florent Osmont, Bertrand Bordage)
- * Made 'add/change/delete collection' permissions configurable from the group edit page (Matt Westcott)
- * Expose React-related dependencies as global variables for extension in the admin interface (Thibaud Colas)
- * Added helper functions for constructing form data for use with ``assertCanCreate``. See :ref:`form_data_test_helpers` (Tim Heap, Matt Westcott)
+* Moved Wagtail API v1 implementation (``wagtail.contrib.api``) to an `external app <https://github.com/wagtail/wagtailapi_legacy>`_ (Karl Hobley)
+* The page chooser now searches all fields of a page, instead of just the title (Bertrand Bordage)
+* Implement ordering by date in form submission view (LB (Ben Johnston))
+* Elasticsearch scroll API is now used when fetching more than 100 search results (Karl Hobley)
+* Added hidden field to the form builder (Ross Crawford-d'Heureuse)
+* Usage count now shows on delete confirmation page when WAGTAIL_USAGE_COUNT_ENABLED is active (Kees Hink)
+* Added usage count to snippets (Kees Hink)
+* Moved usage count to the sidebar on the edit page (Kees Hink)
+* Explorer menu now reflects customisations to the page listing made via the `construct_explorer_page_queryset` hook and `ModelAdmin.exclude_from_explorer` property (Tim Heap)
+* "Choose another image" button changed to "Change image" to avoid ambiguity (Edd Baldry)
+* Added hooks ``before_create_user``, ``after_create_user``, ``before_delete_user``, ``after_delete_user``, ``before_edit_user``, ``after_edit_user`` (Jon Carmack)
+* Added ``exclude_fields_in_copy`` property to Page to define fields that should not be included on page copy (LB (Ben Johnston))
+* Improved error message on incorrect ``{% image %}`` tag syntax (LB (Ben Johnston))
+* Optimized preview data storage (Bertrand Bordage)
+* Added ``render_landing_page`` method to ``AbstractForm`` to be easily overridden and pass ``form_submission`` to landing page context (Stein Strindhaug)
+* Added ``heading`` kwarg to ``InlinePanel`` to allow heading to be set independently of button label (Adrian Turjak)
+* The value type returned from a ``StructBlock`` can now be customised. See :ref:`custom_value_class_for_structblock` (LB (Ben Johnston))
+* Added ``bgcolor`` image operation (Karl Hobley)
+* Added ``WAGTAILADMIN_USER_LOGIN_FORM`` setting for overriding the admin login form (Mike Dingjan)
+* Snippets now support custom primary keys (Sævar Öfjörð Magnússon)
+* Upgraded jQuery to version 3.2.1 (Janneke Janssen)
+* Update autoprefixer configuration to better match browser support targets (Janneke Janssen)
+* Update React and related dependencies to latest versions (Janneke Janssen, Hugo van den Berg)
+* Remove Hallo editor ``.richtext`` CSS class in favour of more explicit extension points (Thibaud Colas)
+* Updated documentation styling (LB (Ben Johnston))
+* Rich text fields now take feature lists into account when whitelisting HTML elements (Matt Westcott)
+* FormPage lists and Form submission lists in admin now use class based views for easy overriding (Johan Arensman)
+* Form submission csv exports now have the export date in the filename and can be customized (Johan Arensman)
+* FormBuilder class now uses bound methods for field generation, adding custom fields is now easier and documented (LB (Ben Johnston))
+* Added ``WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS`` setting to determine whether superusers are included in moderation email notifications (Bruno Alla)
+* Added a basic Dockerfile to the project template (Tom Dyson)
+* StreamField blocks now allow custom ``get_template`` methods for overriding templates in instances (Christopher Bledsoe)
+* Simplified edit handler API (Florent Osmont, Bertrand Bordage)
+* Made 'add/change/delete collection' permissions configurable from the group edit page (Matt Westcott)
+* Expose React-related dependencies as global variables for extension in the admin interface (Thibaud Colas)
+* Added helper functions for constructing form data for use with ``assertCanCreate``. See :ref:`form_data_test_helpers` (Tim Heap, Matt Westcott)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Do not remove stopwords when generating slugs from non-ASCII titles, to avoid issues with incorrect word boundaries (Sævar Öfjörð Magnússon)
- * The PostgreSQL search backend now preserves ordering of the ``QuerySet`` when searching with ``order_by_relevance=False`` (Bertrand Bordage)
- * Using ``modeladmin_register`` as a decorator no longer replaces the decorated class with ``None`` (Tim Heap)
- * Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
- * The ``{% routablepageurl %}`` template tag no longer generates invalid URLs when the ``WAGTAIL_APPEND_SLASH`` setting was set to ``False`` (Venelin Stoykov)
- * The "View live" button is no longer shown if the page doesn't have a routable URL (Tim Heap)
- * API listing views no longer fail when no site records are defined (Karl Hobley)
- * Fixed rendering of border on dropdown arrow buttons on Chrome (Bertrand Bordage)
- * Fixed incorrect z-index on userbar causing it to appear behind page content (Stein Strindhaug)
- * Form submissions pagination no longer looses date filter when changing page (Bertrand Bordage)
- * PostgreSQL search backend now removes duplicate page instances from the database (Bertrand Bordage)
- * ``FormSubmissionsPanel`` now recognises custom form submission classes (LB (Ben Johnston))
- * Prevent the footer and revisions link from unnecessarily collapsing on mobile (Jack Paine)
- * Empty searches were activated when paginating through images and documents (LB (Ben Johnston))
- * Summary numbers of pages, images and documents were not responsive when greater than 4 digits (Michael Palmer)
- * Project template now has password validators enabled by default (Matt Westcott)
- * Alignment options correctly removed from ``TableBlock`` context menu (LB (Ben Johnston))
- * Fix support of ``ATOMIC_REBUILD`` for projects with Elasticsearch client ``>=1.7.0`` (Mikalai Radchuk)
- * Fixed error on Elasticsearch backend when passing a QuerySet as an ``__in`` filter (Karl Hobley, Matt Westcott)
- * ``__isnull`` filters no longer fail on Elasticsearch 5 (Karl Hobley)
- * Prevented intermittent failures on Postgres search backend when a field is defined as both a ``SearchField`` and a ``FilterField`` (Matt Westcott)
- * Alt text of images in rich text is no longer truncated on double-quote characters (Matt Westcott)
- * Ampersands in embed URLs within rich text are no longer double-escaped (Matt Westcott)
- * Using RGBA images no longer crashes with Pillow >= 4.2.0 (Karl Hobley)
- * Copying a page with PostgreSQL search enabled no longer crashes (Bertrand Bordage)
- * Style of the page unlock button was broken (Bertrand Bordage)
- * Admin search no longer floods browser history (Bertrand Bordage)
- * Version comparison now handles custom primary keys on inline models correctly (LB (Ben Johnston))
- * Fixed error when inserting chooser panels into FieldRowPanel (Florent Osmont, Bertrand Bordage)
- * Reinstated missing error reporting on image upload (Matt Westcott)
- * Only load Hallo CSS if Hallo is in use (Thibaud Colas)
- * Prevent style leak of Wagtail panel icons in widgets using ``h2`` elements (Thibaud Colas)
+* Do not remove stopwords when generating slugs from non-ASCII titles, to avoid issues with incorrect word boundaries (Sævar Öfjörð Magnússon)
+* The PostgreSQL search backend now preserves ordering of the ``QuerySet`` when searching with ``order_by_relevance=False`` (Bertrand Bordage)
+* Using ``modeladmin_register`` as a decorator no longer replaces the decorated class with ``None`` (Tim Heap)
+* Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
+* The ``{% routablepageurl %}`` template tag no longer generates invalid URLs when the ``WAGTAIL_APPEND_SLASH`` setting was set to ``False`` (Venelin Stoykov)
+* The "View live" button is no longer shown if the page doesn't have a routable URL (Tim Heap)
+* API listing views no longer fail when no site records are defined (Karl Hobley)
+* Fixed rendering of border on dropdown arrow buttons on Chrome (Bertrand Bordage)
+* Fixed incorrect z-index on userbar causing it to appear behind page content (Stein Strindhaug)
+* Form submissions pagination no longer looses date filter when changing page (Bertrand Bordage)
+* PostgreSQL search backend now removes duplicate page instances from the database (Bertrand Bordage)
+* ``FormSubmissionsPanel`` now recognises custom form submission classes (LB (Ben Johnston))
+* Prevent the footer and revisions link from unnecessarily collapsing on mobile (Jack Paine)
+* Empty searches were activated when paginating through images and documents (LB (Ben Johnston))
+* Summary numbers of pages, images and documents were not responsive when greater than 4 digits (Michael Palmer)
+* Project template now has password validators enabled by default (Matt Westcott)
+* Alignment options correctly removed from ``TableBlock`` context menu (LB (Ben Johnston))
+* Fix support of ``ATOMIC_REBUILD`` for projects with Elasticsearch client ``>=1.7.0`` (Mikalai Radchuk)
+* Fixed error on Elasticsearch backend when passing a QuerySet as an ``__in`` filter (Karl Hobley, Matt Westcott)
+* ``__isnull`` filters no longer fail on Elasticsearch 5 (Karl Hobley)
+* Prevented intermittent failures on Postgres search backend when a field is defined as both a ``SearchField`` and a ``FilterField`` (Matt Westcott)
+* Alt text of images in rich text is no longer truncated on double-quote characters (Matt Westcott)
+* Ampersands in embed URLs within rich text are no longer double-escaped (Matt Westcott)
+* Using RGBA images no longer crashes with Pillow >= 4.2.0 (Karl Hobley)
+* Copying a page with PostgreSQL search enabled no longer crashes (Bertrand Bordage)
+* Style of the page unlock button was broken (Bertrand Bordage)
+* Admin search no longer floods browser history (Bertrand Bordage)
+* Version comparison now handles custom primary keys on inline models correctly (LB (Ben Johnston))
+* Fixed error when inserting chooser panels into FieldRowPanel (Florent Osmont, Bertrand Bordage)
+* Reinstated missing error reporting on image upload (Matt Westcott)
+* Only load Hallo CSS if Hallo is in use (Thibaud Colas)
+* Prevent style leak of Wagtail panel icons in widgets using ``h2`` elements (Thibaud Colas)
 
 Upgrade considerations
 ======================
@@ -131,19 +131,19 @@ Wagtail module path updates
 
 Many of the module paths within Wagtail have been reorganised to reduce duplication - for example, ``wagtail.wagtailcore.models`` is now ``wagtail.core.models``. As a result, ``import`` lines and other references to Wagtail modules will need to be updated when you upgrade to Wagtail 2.0. A new command has been added to assist with this - from the root of your project's code base:
 
-   .. code-block:: console
+.. code-block:: console
 
-       $ wagtail updatemodulepaths --list  # list the files to be changed without updating them
-       $ wagtail updatemodulepaths --diff  # show the changes to be made, without updating files
-       $ wagtail updatemodulepaths  # actually update the files
+    $ wagtail updatemodulepaths --list  # list the files to be changed without updating them
+    $ wagtail updatemodulepaths --diff  # show the changes to be made, without updating files
+    $ wagtail updatemodulepaths  # actually update the files
 
 Or, to run from a different location:
 
-   .. code-block:: console
+.. code-block:: console
 
-       $ wagtail updatemodulepaths /path/to/project --list
-       $ wagtail updatemodulepaths /path/to/project --diff
-       $ wagtail updatemodulepaths /path/to/project
+    $ wagtail updatemodulepaths /path/to/project --list
+    $ wagtail updatemodulepaths /path/to/project --diff
+    $ wagtail updatemodulepaths /path/to/project
 
 For the full list of command line options, enter ``wagtail help updatemodulepaths``.
 
@@ -208,13 +208,13 @@ Hallo.js customisations are unavailable on the Draftail rich text editor
 
 The Draftail rich text editor has a substantially different API from Hallo.js, including the use of a non-HTML format for its internal data representation; as a result, functionality added through Hallo.js plugins will be unavailable. If your project is dependent on Hallo.js-specific behaviour, you can revert to the original Hallo-based editor by adding the following to your settings:
 
-  .. code-block:: python
+.. code-block:: python
 
-    WAGTAILADMIN_RICH_TEXT_EDITORS = {
-        'default': {
-            'WIDGET': 'wagtail.admin.rich_text.HalloRichTextArea'
-        }
-    }
+  WAGTAILADMIN_RICH_TEXT_EDITORS = {
+      'default': {
+          'WIDGET': 'wagtail.admin.rich_text.HalloRichTextArea'
+      }
+  }
 
 
 Data format for rich text fields in ``assertCanCreate`` tests has been updated
@@ -222,23 +222,23 @@ Data format for rich text fields in ``assertCanCreate`` tests has been updated
 
 The ``assertCanCreate`` test method (see :doc:`/advanced_topics/testing`) requires data to be passed in the same format that the page edit form would submit. The Draftail rich text editor posts this data in a non-HTML format, and so any existing ``assertCanCreate`` tests involving rich text fields will fail when Draftail is in use:
 
-  .. code-block:: python
+.. code-block:: python
 
-    self.assertCanCreate(root_page, ContentPage, {
-        'title': 'About us',
-        'body': '<p>Lorem ipsum dolor sit amet</p>',  # will not work
-    })
+  self.assertCanCreate(root_page, ContentPage, {
+      'title': 'About us',
+      'body': '<p>Lorem ipsum dolor sit amet</p>',  # will not work
+  })
 
 Wagtail now provides a set of helper functions for constructing form data: see :ref:`form_data_test_helpers`. The above assertion can now be rewritten as:
 
-  .. code-block:: python
+.. code-block:: python
 
-    from wagtail.tests.utils.form_data import rich_text
+  from wagtail.tests.utils.form_data import rich_text
 
-    self.assertCanCreate(root_page, ContentPage, {
-        'title': 'About us',
-        'body': rich_text('<p>Lorem ipsum dolor sit amet</p>'),
-    })
+  self.assertCanCreate(root_page, ContentPage, {
+      'title': 'About us',
+      'body': rich_text('<p>Lorem ipsum dolor sit amet</p>'),
+  })
 
 
 
@@ -269,35 +269,35 @@ legacy versions of the API until everyone has migrated to an officially supporte
 
 The ``construct_whitelister_element_rules`` hook, used to specify additional HTML elements to be permitted in rich text, is deprecated. The recommended way of whitelisting elements is now to use rich text features - see :ref:`whitelisting_rich_text_elements`. For example, a whitelist rule that was previously defined as:
 
-  .. code-block:: python
+.. code-block:: python
 
-    from wagtail.core import hooks
-    from wagtail.core.whitelist import allow_without_attributes
+  from wagtail.core import hooks
+  from wagtail.core.whitelist import allow_without_attributes
 
-    @hooks.register('construct_whitelister_element_rules')
-    def whitelist_blockquote():
-        return {
-            'blockquote': allow_without_attributes,
-        }
+  @hooks.register('construct_whitelister_element_rules')
+  def whitelist_blockquote():
+      return {
+          'blockquote': allow_without_attributes,
+      }
 
 can be rewritten as:
 
-  .. code-block:: python
+.. code-block:: python
 
-    from wagtail.admin.rich_text.converters.editor_html import WhitelistRule
-    from wagtail.core import hooks
-    from wagtail.core.whitelist import allow_without_attributes
+  from wagtail.admin.rich_text.converters.editor_html import WhitelistRule
+  from wagtail.core import hooks
+  from wagtail.core.whitelist import allow_without_attributes
 
-    @hooks.register('register_rich_text_features')
-    def blockquote_feature(features):
+  @hooks.register('register_rich_text_features')
+  def blockquote_feature(features):
 
-        # register a feature 'blockquote' which whitelists the <blockquote> element
-        features.register_converter_rule('editorhtml', 'blockquote', [
-            WhitelistRule('blockquote', allow_without_attributes),
-        ])
+      # register a feature 'blockquote' which whitelists the <blockquote> element
+      features.register_converter_rule('editorhtml', 'blockquote', [
+          WhitelistRule('blockquote', allow_without_attributes),
+      ])
 
-        # add 'blockquote' to the default feature set
-        features.default_features.append('blockquote')
+      # add 'blockquote' to the default feature set
+      features.default_features.append('blockquote')
 
 Please note that the new Draftail rich text editor uses a different mechanism to process rich text content, and does not apply whitelist rules; they only take effect when the Hallo.js editor is in use.
 
@@ -330,16 +330,16 @@ Hallo editors for extension.
 
 For example,
 
-  .. code-block:: diff
+.. code-block:: diff
 
-    /* JS */
-    - var widget = $(elem).parent('.richtext').data('IKS-hallo');
-    + var widget = $(elem).parent('[data-hallo-editor]').data('IKS-hallo');
+  /* JS */
+  - var widget = $(elem).parent('.richtext').data('IKS-hallo');
+  + var widget = $(elem).parent('[data-hallo-editor]').data('IKS-hallo');
 
-    [...]
+  [...]
 
-    /* Styles */
-    - .richtext {
-    + .halloeditor {
-        font-family: monospace;
-    }
+  /* Styles */
+  - .richtext {
+  + .halloeditor {
+      font-family: monospace;
+  }

+ 3 - 3
docs/releases/2.1.1.rst

@@ -13,6 +13,6 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Fix ``Site.get_site_root_paths()`` preferring other sites over the default when some sites share the same root_page (Andy Babic)
- * Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
- * Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)
+* Fix ``Site.get_site_root_paths()`` preferring other sites over the default when some sites share the same root_page (Andy Babic)
+* Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
+* Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)

+ 2 - 2
docs/releases/2.1.2.rst

@@ -13,5 +13,5 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Bundle the l18n package to avoid installation issues on systems with a non-Unicode locale (Matt Westcott)
- * Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)
+* Bundle the l18n package to avoid installation issues on systems with a non-Unicode locale (Matt Westcott)
+* Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)

+ 1 - 1
docs/releases/2.1.3.rst

@@ -13,4 +13,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
+* Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)

+ 52 - 52
docs/releases/2.1.rst

@@ -44,62 +44,62 @@ Wagtail now supports Elasticsearch 6. See :ref:`wagtailsearch_backends_elasticse
 Other features
 ~~~~~~~~~~~~~~
 
- * Persist tab hash in URL to allow direct navigation to tabs in the admin interface (Ben Weatherman)
- * Animate the chevron icon when opening sub-menus in the admin (Carlo Ascani)
- * Look through the target link and target page slug (in addition to the old slug) when searching for redirects in the admin (Michael Harrison)
- * Remove support for IE6 to IE9 from project template (Samir Shah)
- * Remove outdated X-UA-Compatible meta from admin template  (Thibaud Colas)
- * Add JavaScript source maps in production build for packaged Wagtail (Thibaud Colas)
- * Removed ``assert`` statements from Wagtail API (Kim Chee Leong)
- * Update `jquery-datetimepicker` dependency to make Wagtail more CSP-friendly (`unsafe-eval`) (Pomax)
- * Added error notification when running the ``wagtail`` command on Python <3.4 (Matt Westcott)
- * ``update_index`` management command now accepts a ``--chunk_size`` option to determine the number of items to load at once (Dave Bell)
- * Added hook `register_account_menu_item` to add new account preference items (Michael van Tellingen)
- * Added change email functionality from the account settings (Alejandro Garza, Alexs Mathilda)
- * Add request parameter to edit handlers (Rajeev J Sebastian)
- * ImageChooser now sets a default title based on filename (Coen van der Kamp)
- * Added error handling to the Draftail editor (Thibaud Colas)
- * Add new `wagtail_icon` template tag to facilitate making admin icons accessible (Sander Tuit)
- * Set `ALLOWED_HOSTS` in the project template to allow any host in development (Tom Dyson)
- * Expose reusable client-side code to build Draftail extensions (Thibaud Colas)
- * Added ``WAGTAILFRONTENDCACHE_LANGUAGES`` setting to specify the languages whose URLs are to be purged when using ``i18n_patterns`` (PyMan Claudio Marinozzi)
- * Added ``extra_footer_actions`` template blocks for customising the add/edit page views (Arthur Holzner)
+* Persist tab hash in URL to allow direct navigation to tabs in the admin interface (Ben Weatherman)
+* Animate the chevron icon when opening sub-menus in the admin (Carlo Ascani)
+* Look through the target link and target page slug (in addition to the old slug) when searching for redirects in the admin (Michael Harrison)
+* Remove support for IE6 to IE9 from project template (Samir Shah)
+* Remove outdated X-UA-Compatible meta from admin template  (Thibaud Colas)
+* Add JavaScript source maps in production build for packaged Wagtail (Thibaud Colas)
+* Removed ``assert`` statements from Wagtail API (Kim Chee Leong)
+* Update `jquery-datetimepicker` dependency to make Wagtail more CSP-friendly (`unsafe-eval`) (Pomax)
+* Added error notification when running the ``wagtail`` command on Python <3.4 (Matt Westcott)
+* ``update_index`` management command now accepts a ``--chunk_size`` option to determine the number of items to load at once (Dave Bell)
+* Added hook `register_account_menu_item` to add new account preference items (Michael van Tellingen)
+* Added change email functionality from the account settings (Alejandro Garza, Alexs Mathilda)
+* Add request parameter to edit handlers (Rajeev J Sebastian)
+* ImageChooser now sets a default title based on filename (Coen van der Kamp)
+* Added error handling to the Draftail editor (Thibaud Colas)
+* Add new `wagtail_icon` template tag to facilitate making admin icons accessible (Sander Tuit)
+* Set `ALLOWED_HOSTS` in the project template to allow any host in development (Tom Dyson)
+* Expose reusable client-side code to build Draftail extensions (Thibaud Colas)
+* Added ``WAGTAILFRONTENDCACHE_LANGUAGES`` setting to specify the languages whose URLs are to be purged when using ``i18n_patterns`` (PyMan Claudio Marinozzi)
+* Added ``extra_footer_actions`` template blocks for customising the add/edit page views (Arthur Holzner)
 
 Bug fixes
 ~~~~~~~~~
 
- * Status button on 'edit page' now links to the correct URL when live and draft slug differ (LB (Ben Johnston))
- * Image title text in the gallery and in the chooser now wraps for long filenames (LB (Ben Johnston), Luiz Boaretto)
- * Move image editor action buttons to the bottom of the form on mobile (Julian Gallo)
- * StreamField icons are now correctly sorted into groups on the 'append' menu (Tim Heap)
- * Draftail now supports features specified via the ``WAGTAILADMIN_RICH_TEXT_EDITORS`` setting (Todd Dembrey)
- * Password reset form no longer indicates whether the email is recognised, as per standard Django behaviour (Bertrand Bordage)
- * ``UserAttributeSimilarityValidator`` is now correctly enforced on user creation / editing forms (Tim Heap)
- * Focal area removal not working in IE11 and MS Edge (Thibaud Colas)
- * Rewrite password change feedback message to be more user-friendly (Casper Timmers)
- * Correct dropdown arrow styling in Firefox, IE11 (Janneke Janssen, Alexs Mathilda)
- * Password reset no indicates specific validation errors on certain password restrictions (Lucas Moeskops)
- * Confirmation page on page deletion now respects custom ``get_admin_display_title`` methods (Kim Chee Leong)
- * Adding external link with selected text now includes text in link chooser (Tony Yates, Thibaud Colas, Alexs Mathilda)
- * Editing setting object with no site configured no longer crashes (Harm Zeinstra)
- * Creating a new object with inlines while mandatory fields are empty no longer crashes (Bertrand Bordage)
- * Localization of image and apps verbose names
- * Draftail editor no longer crashes after deleting image/embed using DEL key (Thibaud Colas)
- * Breadcrumb navigation now respects custom ``get_admin_display_title`` methods (Arthur Holzner, Wietze Helmantel, Matt Westcott)
- * Inconsistent order of heading features when adding h1, h5 or h6 as default feature for Hallo RichText editor (Loic Teixeira)
- * Add invalid password reset link error message (Coen van der Kamp)
- * Bypass select/prefetch related optimisation on ``update_index`` for ``ParentalManyToManyField`` to fix crash (Tim Kamanin)
- * 'Add user' is now rendered as a button due to the use of quotes within translations (Benoît Vogel)
- * Menu icon no longer overlaps with title in Modeladmin on mobile (Coen van der Kamp)
- * Background color overflow within the Wagtail documentation (Sergey Fedoseev)
- * Page count on homepage summary panel now takes account of user permissions (Andy Chosak)
- * Explorer view now prevents navigating outside of the common ancestor of the user's permissions (Andy Chosak)
- * Generate URL for the current site when multiple sites share the same root page (Codie Roelf)
- * Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
- * Stop revision comparison view from crashing when non-model FieldPanels are in use (LB (Ben Johnston))
- * Ordering in the page explorer now respects custom ``get_admin_display_title`` methods when sorting <100 pages (Matt Westcott)
- * Use index-specific Elasticsearch endpoints for bulk insertion, for compatibility with providers that lock down the root endpoint (Karl Hobley)
- * Fix usage URL on the document edit page (Jérôme Lebleu)
+* Status button on 'edit page' now links to the correct URL when live and draft slug differ (LB (Ben Johnston))
+* Image title text in the gallery and in the chooser now wraps for long filenames (LB (Ben Johnston), Luiz Boaretto)
+* Move image editor action buttons to the bottom of the form on mobile (Julian Gallo)
+* StreamField icons are now correctly sorted into groups on the 'append' menu (Tim Heap)
+* Draftail now supports features specified via the ``WAGTAILADMIN_RICH_TEXT_EDITORS`` setting (Todd Dembrey)
+* Password reset form no longer indicates whether the email is recognised, as per standard Django behaviour (Bertrand Bordage)
+* ``UserAttributeSimilarityValidator`` is now correctly enforced on user creation / editing forms (Tim Heap)
+* Focal area removal not working in IE11 and MS Edge (Thibaud Colas)
+* Rewrite password change feedback message to be more user-friendly (Casper Timmers)
+* Correct dropdown arrow styling in Firefox, IE11 (Janneke Janssen, Alexs Mathilda)
+* Password reset no indicates specific validation errors on certain password restrictions (Lucas Moeskops)
+* Confirmation page on page deletion now respects custom ``get_admin_display_title`` methods (Kim Chee Leong)
+* Adding external link with selected text now includes text in link chooser (Tony Yates, Thibaud Colas, Alexs Mathilda)
+* Editing setting object with no site configured no longer crashes (Harm Zeinstra)
+* Creating a new object with inlines while mandatory fields are empty no longer crashes (Bertrand Bordage)
+* Localization of image and apps verbose names
+* Draftail editor no longer crashes after deleting image/embed using DEL key (Thibaud Colas)
+* Breadcrumb navigation now respects custom ``get_admin_display_title`` methods (Arthur Holzner, Wietze Helmantel, Matt Westcott)
+* Inconsistent order of heading features when adding h1, h5 or h6 as default feature for Hallo RichText editor (Loic Teixeira)
+* Add invalid password reset link error message (Coen van der Kamp)
+* Bypass select/prefetch related optimisation on ``update_index`` for ``ParentalManyToManyField`` to fix crash (Tim Kamanin)
+* 'Add user' is now rendered as a button due to the use of quotes within translations (Benoît Vogel)
+* Menu icon no longer overlaps with title in Modeladmin on mobile (Coen van der Kamp)
+* Background color overflow within the Wagtail documentation (Sergey Fedoseev)
+* Page count on homepage summary panel now takes account of user permissions (Andy Chosak)
+* Explorer view now prevents navigating outside of the common ancestor of the user's permissions (Andy Chosak)
+* Generate URL for the current site when multiple sites share the same root page (Codie Roelf)
+* Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
+* Stop revision comparison view from crashing when non-model FieldPanels are in use (LB (Ben Johnston))
+* Ordering in the page explorer now respects custom ``get_admin_display_title`` methods when sorting <100 pages (Matt Westcott)
+* Use index-specific Elasticsearch endpoints for bulk insertion, for compatibility with providers that lock down the root endpoint (Karl Hobley)
+* Fix usage URL on the document edit page (Jérôme Lebleu)
 
 
 Upgrade considerations

+ 6 - 6
docs/releases/2.10.1.rst

@@ -13,9 +13,9 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Prevent ``create_log_entries_from_revisions`` command from failing when page model classes are missing (Dan Braghis)
- * Prevent page audit log views from failing for user models without a ``username`` field (Vyacheslav Matyukhin)
- * Fix icon alignment on menu items (Coen van der Kamp)
- * Page editor header bar now correctly shows 'Published' or 'Draft' status when no revisions exist (Matt Westcott)
- * Prevent page editor from failing when ``USE_TZ`` is false (Matt Westcott)
- * Ensure whitespace between block-level elements is preserved when stripping tags from rich text for search indexing (Matt Westcott)
+* Prevent ``create_log_entries_from_revisions`` command from failing when page model classes are missing (Dan Braghis)
+* Prevent page audit log views from failing for user models without a ``username`` field (Vyacheslav Matyukhin)
+* Fix icon alignment on menu items (Coen van der Kamp)
+* Page editor header bar now correctly shows 'Published' or 'Draft' status when no revisions exist (Matt Westcott)
+* Prevent page editor from failing when ``USE_TZ`` is false (Matt Westcott)
+* Ensure whitespace between block-level elements is preserved when stripping tags from rich text for search indexing (Matt Westcott)

+ 5 - 5
docs/releases/2.10.2.rst

@@ -13,8 +13,8 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Avoid use of ``icon`` class name on userbar icon to prevent clashes with front-end styles (Karran Besen)
- * Prevent focused button labels from displaying as white on white (Karran Bessen)
- * Avoid showing preview button on moderation dashboard for page types with preview disabled (Dino Perovic)
- * Prevent oversized buttons in moderation dashboard panel (Dan Braghis)
- * ``create_log_entries_from_revisions`` now handles revisions that cannot be restored due to foreign key constraints (Matt Westcott)
+* Avoid use of ``icon`` class name on userbar icon to prevent clashes with front-end styles (Karran Besen)
+* Prevent focused button labels from displaying as white on white (Karran Bessen)
+* Avoid showing preview button on moderation dashboard for page types with preview disabled (Dino Perovic)
+* Prevent oversized buttons in moderation dashboard panel (Dan Braghis)
+* ``create_log_entries_from_revisions`` now handles revisions that cannot be restored due to foreign key constraints (Matt Westcott)

+ 70 - 70
docs/releases/2.10.rst

@@ -42,85 +42,85 @@ Accessibility and usability
 
 This release contains a number of improvements to the accessibility and general usability of the Wagtail admin, fixing long-standing issues. Some of the changes come from our January 2020 sprint in Bristol, and some from our brand new `accessibility team <https://github.com/wagtail/wagtail/wiki/Accessibility-team>`_:
 
- * Remove sticky footer on small devices, so that content is not blocked and more easily editable (Saeed Tahmasebi)
- * Add SVG icons to resolve accessibility and customisation issues and start using them in a subset of Wagtail's admin (Coen van der Kamp, Scott Cranfill, Thibaud Colas, Dan Braghis)
- * Switch userbar and header H1s to use SVG icons (Coen van der Kamp)
- * Add skip link for keyboard users to bypass Wagtail navigation in the admin (Martin Coote)
- * Add missing dropdown icons to image upload, document upload, and site settings screens (Andreas Bernacca)
- * Prevent snippets’ bulk delete button from being present for screen reader users when it’s absent for sighted users (LB (Ben Johnston))
+* Remove sticky footer on small devices, so that content is not blocked and more easily editable (Saeed Tahmasebi)
+* Add SVG icons to resolve accessibility and customisation issues and start using them in a subset of Wagtail's admin (Coen van der Kamp, Scott Cranfill, Thibaud Colas, Dan Braghis)
+* Switch userbar and header H1s to use SVG icons (Coen van der Kamp)
+* Add skip link for keyboard users to bypass Wagtail navigation in the admin (Martin Coote)
+* Add missing dropdown icons to image upload, document upload, and site settings screens (Andreas Bernacca)
+* Prevent snippets’ bulk delete button from being present for screen reader users when it’s absent for sighted users (LB (Ben Johnston))
 
 Other features
 ~~~~~~~~~~~~~~
 
- * Added ``webpquality`` and ``format-webp-lossless`` image filters and ``WAGTAILIMAGES_WEBP_QUALITY`` setting. See :ref:`output_image_format` and :ref:`image_quality` (Nikolay Lukyanov)
- * Reorganised Dockerfile in project template to follow best practices (Tomasz Knapik, Jannik Wempe)
- * Added filtering to locked pages report (Karl Hobley)
- * Adds ability to view a group's users via standalone admin URL and a link to this on the group edit view (Karran Besen)
- * Redirect to previous url when deleting/copying/unpublish a page and modify this url via the relevant hooks (Ascani Carlo)
- * Added ``next_url`` keyword argument on ``register_page_listing_buttons`` and ``register_page_listing_more_buttons`` hooks (Ascani Carlo, Matt Westcott, LB (Ben Johnston))
- * ``AbstractEmailForm`` will use ``SHORT_DATETIME_FORMAT`` and ``SHORT_DATE_FORMAT`` Django settings to format date/time values in email (Haydn Greatnews)
- * ``AbstractEmailForm`` now has a separate method (``render_email``) to build up email content on submission emails. See :ref:`form_builder_render_email`. (Haydn Greatnews)
- * Add ``pre_page_move`` and ``post_page_move`` signals. (Andy Babic)
- * Add ability to sort search promotions on listing page (Chris Ranjana, LB (Ben Johnston))
- * Upgrade internal JS tooling; Node v10, Gulp v4 & Jest v23 (Jim Jazwiecki, Kim LaRocca, Thibaud Colas)
- * Add ``after_publish_page``, ``before_publish_page``, ``after_unpublish_page`` & ``before_unpublish_page`` hooks (Jonatas Baldin, Coen van der Kamp)
- * Add convenience ``page_url`` shortcut to improve how page URLs can be accessed from site settings in Django templates (Andy Babic)
- * Show more granular error messages from Pillow when uploading images (Rick van Hattem)
- * Add ordering to ``Site`` object, so that index page and ``Site`` switcher will be sorted consistently (Coen van der Kamp, Tim Leguijt)
- * Add Reddit to oEmbed provider list (Luke Hardwick)
- * Add ability to replace the default Wagtail logo in the userbar, via ``branding_logo`` block (Meteor0id)
- * Add ``alt`` property to ``ImageRenditionField`` api representation (Liam Mullens)
- * Add ``purge_revisions`` management command to purge old page revisions (Jacob Topp-Mugglestone, Tom Dyson)
- * Render the Wagtail User Bar on non ``Page`` views (Caitlin White, Coen van der Kamp)
- * Add ability to define ``form_classname`` on ``ListBlock`` & ``StreamBlock`` (LB (Ben Johnston))
- * Add documentation about how to use ``Rustface`` for image feature detection (Neal Todd)
- * Improve performance of public/not_public queries in ``PageQuerySet`` (Timothy Bautista)
- * Add ``add_redirect`` static method to ``Redirect`` class for programmatic redirect creation (Brylie Christopher Oxley, Lacey Williams Henschel)
- * Add reference documentation for ``wagtail.contrib.redirects`` See :ref:`redirects`. (LB (Ben Johnston))
- * ``bulk_delete`` page permission is no longer required to move pages, even if those pages have children (Robert Rollins, LB (Ben Johnston))
- * Add ``after_edit_snippet``, ``after_create_snippet`` and ``after_delete_snippet`` hooks and documentation (Kalob Taulien)
- * Improve performance of empty search results by avoiding downloading the entire search index in these scenarios (Lars van de Kerkhof, Coen van der Kamp)
- * Replace ``gulp-sass`` with ``gulp-dart-sass`` to improve core development across different platforms (Thibaud Colas)
- * Remove markup around rich text rendering by default, provide a way to use old behaviour via ``wagtail.contrib.legacy.richtext``. See :doc:`/reference/contrib/legacy_richtext`. (Coen van der Kamp, Dan Braghis)
- * Add ``WAGTAIL_TIME_FORMAT`` setting (Jacob Topp-Mugglestone)
- * Apply title length normalisation to improve ranking on PostgreSQL search (Karl Hobley)
- * Allow omitting the default editor from ``WAGTAILADMIN_RICH_TEXT_EDITORS`` (Gassan Gousseinov)
- * Disable password auto-completion on user creation form (Samir Shah)
- * Upgrade jQuery to version 3.5.1 to reduce penetration testing false positives (Matt Westcott)
- * Add ability to extend ``EditHandler`` without a children attribute (Seb Brown)
- * ``Page.objects.specific`` now gracefully handles pages with missing specific records (Andy Babic)
- * StreamField 'add' buttons are now disabled when maximum count is reached (Max Gabrielsson)
- * Use underscores for form builder field names to allow use as template variables (Ashia Zawaduk, LB (Ben Johnston))
- * Deprecate use of unidecode within form builder field names (Michael van Tellingen, LB (Ben Johnston))
- * Improve error feedback when editing a page with a missing model class (Andy Babic)
- * Change Wagtail tabs implementation to only allow slug-formatted tab identifiers, reducing false positives from security audits (Matt Westcott)
- * Ensure errors during Postgres search indexing are left uncaught to assist troubleshooting (Karl Hobley)
- * Add ability to edit images and embeds in rich text editor (Maylon Pedroso, Samuel Mendes, Gabriel Peracio)
+* Added ``webpquality`` and ``format-webp-lossless`` image filters and ``WAGTAILIMAGES_WEBP_QUALITY`` setting. See :ref:`output_image_format` and :ref:`image_quality` (Nikolay Lukyanov)
+* Reorganised Dockerfile in project template to follow best practices (Tomasz Knapik, Jannik Wempe)
+* Added filtering to locked pages report (Karl Hobley)
+* Adds ability to view a group's users via standalone admin URL and a link to this on the group edit view (Karran Besen)
+* Redirect to previous url when deleting/copying/unpublish a page and modify this url via the relevant hooks (Ascani Carlo)
+* Added ``next_url`` keyword argument on ``register_page_listing_buttons`` and ``register_page_listing_more_buttons`` hooks (Ascani Carlo, Matt Westcott, LB (Ben Johnston))
+* ``AbstractEmailForm`` will use ``SHORT_DATETIME_FORMAT`` and ``SHORT_DATE_FORMAT`` Django settings to format date/time values in email (Haydn Greatnews)
+* ``AbstractEmailForm`` now has a separate method (``render_email``) to build up email content on submission emails. See :ref:`form_builder_render_email`. (Haydn Greatnews)
+* Add ``pre_page_move`` and ``post_page_move`` signals. (Andy Babic)
+* Add ability to sort search promotions on listing page (Chris Ranjana, LB (Ben Johnston))
+* Upgrade internal JS tooling; Node v10, Gulp v4 & Jest v23 (Jim Jazwiecki, Kim LaRocca, Thibaud Colas)
+* Add ``after_publish_page``, ``before_publish_page``, ``after_unpublish_page`` & ``before_unpublish_page`` hooks (Jonatas Baldin, Coen van der Kamp)
+* Add convenience ``page_url`` shortcut to improve how page URLs can be accessed from site settings in Django templates (Andy Babic)
+* Show more granular error messages from Pillow when uploading images (Rick van Hattem)
+* Add ordering to ``Site`` object, so that index page and ``Site`` switcher will be sorted consistently (Coen van der Kamp, Tim Leguijt)
+* Add Reddit to oEmbed provider list (Luke Hardwick)
+* Add ability to replace the default Wagtail logo in the userbar, via ``branding_logo`` block (Meteor0id)
+* Add ``alt`` property to ``ImageRenditionField`` api representation (Liam Mullens)
+* Add ``purge_revisions`` management command to purge old page revisions (Jacob Topp-Mugglestone, Tom Dyson)
+* Render the Wagtail User Bar on non ``Page`` views (Caitlin White, Coen van der Kamp)
+* Add ability to define ``form_classname`` on ``ListBlock`` & ``StreamBlock`` (LB (Ben Johnston))
+* Add documentation about how to use ``Rustface`` for image feature detection (Neal Todd)
+* Improve performance of public/not_public queries in ``PageQuerySet`` (Timothy Bautista)
+* Add ``add_redirect`` static method to ``Redirect`` class for programmatic redirect creation (Brylie Christopher Oxley, Lacey Williams Henschel)
+* Add reference documentation for ``wagtail.contrib.redirects`` See :ref:`redirects`. (LB (Ben Johnston))
+* ``bulk_delete`` page permission is no longer required to move pages, even if those pages have children (Robert Rollins, LB (Ben Johnston))
+* Add ``after_edit_snippet``, ``after_create_snippet`` and ``after_delete_snippet`` hooks and documentation (Kalob Taulien)
+* Improve performance of empty search results by avoiding downloading the entire search index in these scenarios (Lars van de Kerkhof, Coen van der Kamp)
+* Replace ``gulp-sass`` with ``gulp-dart-sass`` to improve core development across different platforms (Thibaud Colas)
+* Remove markup around rich text rendering by default, provide a way to use old behaviour via ``wagtail.contrib.legacy.richtext``. See :doc:`/reference/contrib/legacy_richtext`. (Coen van der Kamp, Dan Braghis)
+* Add ``WAGTAIL_TIME_FORMAT`` setting (Jacob Topp-Mugglestone)
+* Apply title length normalisation to improve ranking on PostgreSQL search (Karl Hobley)
+* Allow omitting the default editor from ``WAGTAILADMIN_RICH_TEXT_EDITORS`` (Gassan Gousseinov)
+* Disable password auto-completion on user creation form (Samir Shah)
+* Upgrade jQuery to version 3.5.1 to reduce penetration testing false positives (Matt Westcott)
+* Add ability to extend ``EditHandler`` without a children attribute (Seb Brown)
+* ``Page.objects.specific`` now gracefully handles pages with missing specific records (Andy Babic)
+* StreamField 'add' buttons are now disabled when maximum count is reached (Max Gabrielsson)
+* Use underscores for form builder field names to allow use as template variables (Ashia Zawaduk, LB (Ben Johnston))
+* Deprecate use of unidecode within form builder field names (Michael van Tellingen, LB (Ben Johnston))
+* Improve error feedback when editing a page with a missing model class (Andy Babic)
+* Change Wagtail tabs implementation to only allow slug-formatted tab identifiers, reducing false positives from security audits (Matt Westcott)
+* Ensure errors during Postgres search indexing are left uncaught to assist troubleshooting (Karl Hobley)
+* Add ability to edit images and embeds in rich text editor (Maylon Pedroso, Samuel Mendes, Gabriel Peracio)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Ensure link to add a new user works when no users are visible in the users list (LB (Ben Johnston))
- * ``AbstractEmailForm`` saved submission fields are now aligned with the email content fields, ``form.cleaned_data`` will be used instead of ``form.fields`` (Haydn Greatnews)
- * Removed ARIA ``role="table"`` from TableBlock output (Thibaud Colas)
- * Set Cache-Control header to prevent page preview responses from being cached (Tomas Walch)
- * Accept unicode characters in slugs on the "copy page" form (François Poulain)
- * Support IPv6 domain (Alex Gleason, Coen van der Kamp)
- * Remove top padding when ``FieldRowPanel`` is used inside a ``MultiFieldPanel`` (Jérôme Lebleu)
- * Add Wagtail User Bar back to page previews and ensure moderation actions are available (Coen van der Kamp)
- * Fix issue where queryset annotations were lost (e.g. ``.annotate_score()``) when using specific models in page query (Dan Bentley)
- * Prevent date/time picker from losing an hour on losing focus when 12-hour times are in use (Jacob Topp-Mugglestone)
- * Strip out HTML tags from ``RichTextField`` & ``RichTextBlock`` search index content (Timothy Bautista)
- * Avoid using null on string ``Site.site_name`` blank values to avoid different values for no name (Coen van der Kamp)
- * Fix deprecation warnings on Elasticsearch 7 (Yngve Høiseth)
- * Remove use of Node.forEach for IE 11 compatibility in admin menu items (Thibaud Colas)
- * Fix incorrect method name in SiteMiddleware deprecation warning (LB (Ben Johnston))
- * ``wagtail.contrib.sitemaps`` no longer depends on SiteMiddleware (Matt Westcott)
- * Purge image renditions cache when renditions are deleted (Pascal Widdershoven, Matt Westcott)
- * Image / document forms now display non-field errors such as ``unique_together`` constraints (Matt Westcott)
- * Make "Site" chooser in site settings translatable (Andreas Bernacca)
- * Fix group permission checkboxes not being clickable in IE11 (LB (Ben Johnston))
+* Ensure link to add a new user works when no users are visible in the users list (LB (Ben Johnston))
+* ``AbstractEmailForm`` saved submission fields are now aligned with the email content fields, ``form.cleaned_data`` will be used instead of ``form.fields`` (Haydn Greatnews)
+* Removed ARIA ``role="table"`` from TableBlock output (Thibaud Colas)
+* Set Cache-Control header to prevent page preview responses from being cached (Tomas Walch)
+* Accept unicode characters in slugs on the "copy page" form (François Poulain)
+* Support IPv6 domain (Alex Gleason, Coen van der Kamp)
+* Remove top padding when ``FieldRowPanel`` is used inside a ``MultiFieldPanel`` (Jérôme Lebleu)
+* Add Wagtail User Bar back to page previews and ensure moderation actions are available (Coen van der Kamp)
+* Fix issue where queryset annotations were lost (e.g. ``.annotate_score()``) when using specific models in page query (Dan Bentley)
+* Prevent date/time picker from losing an hour on losing focus when 12-hour times are in use (Jacob Topp-Mugglestone)
+* Strip out HTML tags from ``RichTextField`` & ``RichTextBlock`` search index content (Timothy Bautista)
+* Avoid using null on string ``Site.site_name`` blank values to avoid different values for no name (Coen van der Kamp)
+* Fix deprecation warnings on Elasticsearch 7 (Yngve Høiseth)
+* Remove use of Node.forEach for IE 11 compatibility in admin menu items (Thibaud Colas)
+* Fix incorrect method name in SiteMiddleware deprecation warning (LB (Ben Johnston))
+* ``wagtail.contrib.sitemaps`` no longer depends on SiteMiddleware (Matt Westcott)
+* Purge image renditions cache when renditions are deleted (Pascal Widdershoven, Matt Westcott)
+* Image / document forms now display non-field errors such as ``unique_together`` constraints (Matt Westcott)
+* Make "Site" chooser in site settings translatable (Andreas Bernacca)
+* Fix group permission checkboxes not being clickable in IE11 (LB (Ben Johnston))
 
 
 Upgrade considerations

+ 3 - 3
docs/releases/2.11.1.rst

@@ -13,6 +13,6 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Ensure that cached ``wagtail_site_root_paths`` structures from older Wagtail versions are invalidated (Sævar Öfjörð Magnússon)
- * Avoid circular import between wagtail.admin.auth and custom user models (Matt Westcott)
- * Prevent error on resolving page URLs when a locale outside of ``WAGTAIL_CONTENT_LANGUAGES`` is active (Matt Westcott)
+* Ensure that cached ``wagtail_site_root_paths`` structures from older Wagtail versions are invalidated (Sævar Öfjörð Magnússon)
+* Avoid circular import between wagtail.admin.auth and custom user models (Matt Westcott)
+* Prevent error on resolving page URLs when a locale outside of ``WAGTAIL_CONTENT_LANGUAGES`` is active (Matt Westcott)

+ 6 - 6
docs/releases/2.11.2.rst

@@ -22,9 +22,9 @@ This feature was developed by Cynthia Kiser and Luis Nell.
 Bug fixes
 ~~~~~~~~~
 
- * Improve performance of permission check on translations for edit page (Karl Hobley)
- * Gracefully handle missing Locale records on ``Locale.get_active`` and ``.localized`` (Matt Westcott)
- * Handle ``get_supported_language_variant`` returning a language variant not in ``LANGUAGES`` (Matt Westcott)
- * Reinstate missing icon on settings edit view (Jérôme Lebleu)
- * Avoid performance and pagination logic issues with a large number of languages (Karl Hobley)
- * Allow deleting the default locale (Matt Westcott)
+* Improve performance of permission check on translations for edit page (Karl Hobley)
+* Gracefully handle missing Locale records on ``Locale.get_active`` and ``.localized`` (Matt Westcott)
+* Handle ``get_supported_language_variant`` returning a language variant not in ``LANGUAGES`` (Matt Westcott)
+* Reinstate missing icon on settings edit view (Jérôme Lebleu)
+* Avoid performance and pagination logic issues with a large number of languages (Karl Hobley)
+* Allow deleting the default locale (Matt Westcott)

+ 4 - 4
docs/releases/2.11.3.rst

@@ -13,10 +13,10 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Updated project template migrations to ensure that initial homepage creation runs before addition of locale field (Dan Braghis)
- * Restore ability to use translatable strings in ``LANGUAGES`` / ``WAGTAIL_CONTENT_LANGUAGES`` settings (Andreas Morgenstern)
- * Allow ``locale`` / ``translation_of`` API filters to be used in combination with search (Matt Westcott)
- * Prevent error on ``create_log_entries_from_revisions`` when checking publish state on a revision that cannot be restored (Kristin Riebe)
+* Updated project template migrations to ensure that initial homepage creation runs before addition of locale field (Dan Braghis)
+* Restore ability to use translatable strings in ``LANGUAGES`` / ``WAGTAIL_CONTENT_LANGUAGES`` settings (Andreas Morgenstern)
+* Allow ``locale`` / ``translation_of`` API filters to be used in combination with search (Matt Westcott)
+* Prevent error on ``create_log_entries_from_revisions`` when checking publish state on a revision that cannot be restored (Kristin Riebe)
 
 
 Upgrade considerations

+ 3 - 3
docs/releases/2.11.4.rst

@@ -13,6 +13,6 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Prevent delete button showing on collection / workflow edit views when delete permission is absent (Helder Correia)
- * Ensure aliases are published when the source page is published (Karl Hobley)
- * Make page privacy rules apply to aliases (Karl Hobley)
+* Prevent delete button showing on collection / workflow edit views when delete permission is absent (Helder Correia)
+* Ensure aliases are published when the source page is published (Karl Hobley)
+* Make page privacy rules apply to aliases (Karl Hobley)

+ 50 - 50
docs/releases/2.11.rst

@@ -50,53 +50,53 @@ Collections (for organising images, documents or other media) can now be managed
 Other features
 ~~~~~~~~~~~~~~
 
- * Add ``before_edit_snippet``, ``before_create_snippet`` and ``before_delete_snippet`` hooks and documentation (Karl Hobley. Sponsored by the Mozilla Foundation)
- * Add ``register_snippet_listing_buttons`` and ``construct_snippet_listing_buttons`` hooks and documentation (Karl Hobley. Sponsored by the Mozilla Foundation)
- * Add ``wagtail --version`` to available Wagtail CLI commands (Kalob Taulien)
- * Add ``hooks.register_temporarily`` utility function for testing hooks (Karl Hobley. Sponsored by the Mozilla Foundation)
- * Remove ``unidecode`` and use ``anyascii`` in for Unicode to ASCII conversion (Robbie Mackay)
- * Add ``render`` helper to ``RoutablePageMixin`` to support serving template responses according to Wagtail conventions (Andy Babic)
- * Specify minimum Python version in setup.py (Vince Salvino)
- * Extend treebeard's ``fix_tree`` method with the ability to non-destructively fix path issues and add a --full option to apply path fixes (Matt Westcott)
- * Add support for hierarchical/nested Collections (Robert Rollins)
- * Show user's full name in report views (Matt Westcott)
- * Improve Wagtail admin page load performance by caching SVG icons sprite in localStorage (Coen van der Kamp)
- * Support SVG icons in ModelAdmin menu items (Scott Cranfill)
- * Support SVG icons in admin breadcrumbs (Coen van der Kamp)
- * Serve PDFs inline in the browser (Matt Westcott)
- * Make document ``content-type`` and ``content-disposition`` configurable via ``WAGTAILDOCS_CONTENT_TYPES`` and ``WAGTAILDOCS_INLINE_CONTENT_TYPES`` (Matt Westcott)
- * Slug generation no longer removes stopwords (Andy Chosak, Scott Cranfill)
- * Add check to disallow StreamField block names that do not match Python variable syntax (François Poulain)
- * The ``BASE_URL`` setting is now converted to a string, if it isn't already, when constructing API URLs (thenewguy)
- * Preview from 'pages awaiting moderation' now opens in a new window (Cynthia Kiser)
- * Add document extension validation if ``WAGTAIL_DOCS_EXTENSIONS`` is set to a list of allowed extensions (Meghana Bhange)
- * Use ``django-admin`` command in place of ``django-admin.py`` (minusf)
- * Add ``register_snippet_action_menu_item`` and ``construct_snippet_action_menu`` hooks to modify the actions available when creating / editing a snippet (Karl Hobley)
- * Moved ``generate_signature`` and ``verify_signature`` functions into ``wagtail.images.utils`` (Noah H)
- * Implement ``bulk_to_python`` on all structural StreamField block types (Matt Westcott)
- * Add natural key support to ``GroupCollectionPermission`` (Jim Jazwiecki)
- * Implement ``prepopulated_fields`` for ``wagtail.contrib.modeladmin`` (David Bramwell)
- * Change ``classname`` keyword argument on basic StreamField blocks to ``form_classname`` (Meghana Bhange)
- * Replace page explorer pushPage/popPage with gotoPage for more flexible explorer navigation (Karl Hobley)
+* Add ``before_edit_snippet``, ``before_create_snippet`` and ``before_delete_snippet`` hooks and documentation (Karl Hobley. Sponsored by the Mozilla Foundation)
+* Add ``register_snippet_listing_buttons`` and ``construct_snippet_listing_buttons`` hooks and documentation (Karl Hobley. Sponsored by the Mozilla Foundation)
+* Add ``wagtail --version`` to available Wagtail CLI commands (Kalob Taulien)
+* Add ``hooks.register_temporarily`` utility function for testing hooks (Karl Hobley. Sponsored by the Mozilla Foundation)
+* Remove ``unidecode`` and use ``anyascii`` in for Unicode to ASCII conversion (Robbie Mackay)
+* Add ``render`` helper to ``RoutablePageMixin`` to support serving template responses according to Wagtail conventions (Andy Babic)
+* Specify minimum Python version in setup.py (Vince Salvino)
+* Extend treebeard's ``fix_tree`` method with the ability to non-destructively fix path issues and add a --full option to apply path fixes (Matt Westcott)
+* Add support for hierarchical/nested Collections (Robert Rollins)
+* Show user's full name in report views (Matt Westcott)
+* Improve Wagtail admin page load performance by caching SVG icons sprite in localStorage (Coen van der Kamp)
+* Support SVG icons in ModelAdmin menu items (Scott Cranfill)
+* Support SVG icons in admin breadcrumbs (Coen van der Kamp)
+* Serve PDFs inline in the browser (Matt Westcott)
+* Make document ``content-type`` and ``content-disposition`` configurable via ``WAGTAILDOCS_CONTENT_TYPES`` and ``WAGTAILDOCS_INLINE_CONTENT_TYPES`` (Matt Westcott)
+* Slug generation no longer removes stopwords (Andy Chosak, Scott Cranfill)
+* Add check to disallow StreamField block names that do not match Python variable syntax (François Poulain)
+* The ``BASE_URL`` setting is now converted to a string, if it isn't already, when constructing API URLs (thenewguy)
+* Preview from 'pages awaiting moderation' now opens in a new window (Cynthia Kiser)
+* Add document extension validation if ``WAGTAIL_DOCS_EXTENSIONS`` is set to a list of allowed extensions (Meghana Bhange)
+* Use ``django-admin`` command in place of ``django-admin.py`` (minusf)
+* Add ``register_snippet_action_menu_item`` and ``construct_snippet_action_menu`` hooks to modify the actions available when creating / editing a snippet (Karl Hobley)
+* Moved ``generate_signature`` and ``verify_signature`` functions into ``wagtail.images.utils`` (Noah H)
+* Implement ``bulk_to_python`` on all structural StreamField block types (Matt Westcott)
+* Add natural key support to ``GroupCollectionPermission`` (Jim Jazwiecki)
+* Implement ``prepopulated_fields`` for ``wagtail.contrib.modeladmin`` (David Bramwell)
+* Change ``classname`` keyword argument on basic StreamField blocks to ``form_classname`` (Meghana Bhange)
+* Replace page explorer pushPage/popPage with gotoPage for more flexible explorer navigation (Karl Hobley)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Make page-level actions accessible to keyboard users in page listing tables (Jesse Menn)
- * ``WAGTAILFRONTENDCACHE_LANGUAGES`` was being interpreted incorrectly. It now accepts a list of strings, as documented (Karl Hobley)
- * Update oEmbed endpoints to use https where available (Matt Westcott)
- * Revise ``edit_handler`` bind order in ModelAdmin views and fix duplicate form instance creation (Jérôme Lebleu)
- * Properly distinguish child blocks when comparing revisions with nested StreamBlocks (Martin Mena)
- * Correctly handle Turkish 'İ' characters in client-side slug generation (Matt Westcott)
- * Page chooser widgets now reflect custom ``get_admin_display_title`` methods (Saptak Sengupta)
- * ``Page.copy()`` now raises an error if the page being copied is unsaved (Anton Zhyltsou)
- * ``Page.copy()`` now triggers a ``page_published`` if the copied page is live (Anton Zhyltsou)
- * The Elasticsearch ``URLS`` setting can now take a string on its own instead of a list (Sævar Öfjörð Magnússon)
- * Avoid retranslating month / weekday names that Django already provides (Matt Westcott)
- * Fixed padding around checkbox and radio inputs (Cole Maclean)
- * Fix spacing around the privacy indicator panel (Sævar Öfjörð Magnússon, Dan Braghis)
- * Consistently redirect to admin home on permission denied (Matt Westcott, Anton Zhyltsou)
+* Make page-level actions accessible to keyboard users in page listing tables (Jesse Menn)
+* ``WAGTAILFRONTENDCACHE_LANGUAGES`` was being interpreted incorrectly. It now accepts a list of strings, as documented (Karl Hobley)
+* Update oEmbed endpoints to use https where available (Matt Westcott)
+* Revise ``edit_handler`` bind order in ModelAdmin views and fix duplicate form instance creation (Jérôme Lebleu)
+* Properly distinguish child blocks when comparing revisions with nested StreamBlocks (Martin Mena)
+* Correctly handle Turkish 'İ' characters in client-side slug generation (Matt Westcott)
+* Page chooser widgets now reflect custom ``get_admin_display_title`` methods (Saptak Sengupta)
+* ``Page.copy()`` now raises an error if the page being copied is unsaved (Anton Zhyltsou)
+* ``Page.copy()`` now triggers a ``page_published`` if the copied page is live (Anton Zhyltsou)
+* The Elasticsearch ``URLS`` setting can now take a string on its own instead of a list (Sævar Öfjörð Magnússon)
+* Avoid retranslating month / weekday names that Django already provides (Matt Westcott)
+* Fixed padding around checkbox and radio inputs (Cole Maclean)
+* Fix spacing around the privacy indicator panel (Sævar Öfjörð Magnússon, Dan Braghis)
+* Consistently redirect to admin home on permission denied (Matt Westcott, Anton Zhyltsou)
 
 
 Upgrade considerations
@@ -153,19 +153,19 @@ As part of the hierarchical collections support, the ``path`` field on the Colle
 
 However, if your project creates new collections programmatically after migrations have run, and assigns the ``path`` field directly - for example, by loading from a fixture file - this code will need to be updated to insert them in alphabetical order. Otherwise, errors may occur when subsequently adding new collections through the Wagtail admin. This can be done as follows:
 
- * Update paths to match alphabetical order. For example, if you have a fixture that creates the collections ``Zebras`` and ``Aardvarks`` with paths ``00010001`` and ``00010002`` respectively, these paths should be swapped.
- * *Alternatively*, after creating the collections, run the Python code:
+* Update paths to match alphabetical order. For example, if you have a fixture that creates the collections ``Zebras`` and ``Aardvarks`` with paths ``00010001`` and ``00010002`` respectively, these paths should be swapped.
+* *Alternatively*, after creating the collections, run the Python code:
 
-   .. code-block:: python
+  .. code-block:: python
 
-       from wagtail.core.models import Collection
-       Collection.fix_tree(fix_paths=True)
+      from wagtail.core.models import Collection
+      Collection.fix_tree(fix_paths=True)
 
-   or the management command:
+  or the management command:
 
-   .. code-block:: console
+  .. code-block:: console
 
-       python manage.py fixtree --full
+      python manage.py fixtree --full
 
 
 ``Site.get_site_root_paths`` now returns language code

+ 5 - 5
docs/releases/2.12.1.rst

@@ -13,8 +13,8 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Ensure aliases are published when the source page is published (Karl Hobley)
- * Make page privacy rules apply to aliases (Karl Hobley)
- * Prevent error when saving embeds that do not include a thumbnail URL (Cynthia Kiser)
- * Ensure that duplicate embed records are deleted when upgrading (Matt Westcott)
- * Prevent failure when running ``manage.py dumpdata`` with no arguments (Matt Westcott)
+* Ensure aliases are published when the source page is published (Karl Hobley)
+* Make page privacy rules apply to aliases (Karl Hobley)
+* Prevent error when saving embeds that do not include a thumbnail URL (Cynthia Kiser)
+* Ensure that duplicate embed records are deleted when upgrading (Matt Westcott)
+* Prevent failure when running ``manage.py dumpdata`` with no arguments (Matt Westcott)

+ 15 - 15
docs/releases/2.12.rst

@@ -29,26 +29,26 @@ Wagtail’s admin now uses CSS custom properties for its primary teal color. App
 Other features
 ~~~~~~~~~~~~~~
 
- * Added support for Python 3.9
- * Added ``WAGTAILIMAGES_IMAGE_FORM_BASE`` and ``WAGTAILDOCS_DOCUMENT_FORM_BASE`` settings to customise the forms for images and documents (Dan Braghis)
- * Switch pagination icons to use SVG instead of icon fonts (Scott Cranfill)
- * Added string representation to image Format class (Andreas Nüßlein)
- * Support returning None from ``register_page_action_menu_item`` and ``register_snippet_action_menu_item`` to skip registering an item (Vadim Karpenko)
- * Fields on a custom image model can now be defined as required / ``blank=False`` (Matt Westcott)
- * Add combined index for Postgres search backend (Will Giddens)
- * Add ``Page.specific_deferred`` property for accessing specific page instance without up-front database queries (Andy Babic)
- * Add hash lookup to embeds to support URLs longer than 255 characters (Coen van der Kamp)
+* Added support for Python 3.9
+* Added ``WAGTAILIMAGES_IMAGE_FORM_BASE`` and ``WAGTAILDOCS_DOCUMENT_FORM_BASE`` settings to customise the forms for images and documents (Dan Braghis)
+* Switch pagination icons to use SVG instead of icon fonts (Scott Cranfill)
+* Added string representation to image Format class (Andreas Nüßlein)
+* Support returning None from ``register_page_action_menu_item`` and ``register_snippet_action_menu_item`` to skip registering an item (Vadim Karpenko)
+* Fields on a custom image model can now be defined as required / ``blank=False`` (Matt Westcott)
+* Add combined index for Postgres search backend (Will Giddens)
+* Add ``Page.specific_deferred`` property for accessing specific page instance without up-front database queries (Andy Babic)
+* Add hash lookup to embeds to support URLs longer than 255 characters (Coen van der Kamp)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * Stop menu icon overlapping the breadcrumb on small viewport widths in page editor (Karran Besen)
- * Make sure document chooser pagination preserves the selected collection when moving between pages (Alex Sa)
- * Gracefully handle oEmbed endpoints returning non-JSON responses (Matt Westcott)
- * Fix unique constraint on WorkflowState for SQL Server compatibility (David Beitey)
- * Reinstate chevron on collection dropdown (Mike Brown)
- * Prevent delete button showing on collection / workflow edit views when delete permission is absent (Helder Correia)
+* Stop menu icon overlapping the breadcrumb on small viewport widths in page editor (Karran Besen)
+* Make sure document chooser pagination preserves the selected collection when moving between pages (Alex Sa)
+* Gracefully handle oEmbed endpoints returning non-JSON responses (Matt Westcott)
+* Fix unique constraint on WorkflowState for SQL Server compatibility (David Beitey)
+* Reinstate chevron on collection dropdown (Mike Brown)
+* Prevent delete button showing on collection / workflow edit views when delete permission is absent (Helder Correia)
 
 
 Upgrade considerations

+ 6 - 6
docs/releases/2.13.rst

@@ -13,17 +13,17 @@ What's new
 Other features
 ~~~~~~~~~~~~~~
 
- * Support passing ``min_num``, ``max_num`` and ``block_counts`` arguments directly to ``StreamField`` (Haydn Greatnews, Matt Westcott)
- * Add the option to set rich text images as decorative, without alt text (Helen Chapman, Thibaud Colas)
- * Add support for ``__year`` filter in Elasticsearch queries (Seb Brown)
+* Support passing ``min_num``, ``max_num`` and ``block_counts`` arguments directly to ``StreamField`` (Haydn Greatnews, Matt Westcott)
+* Add the option to set rich text images as decorative, without alt text (Helen Chapman, Thibaud Colas)
+* Add support for ``__year`` filter in Elasticsearch queries (Seb Brown)
 
 
 Bug fixes
 ~~~~~~~~~
 
- * StreamField required status is now consistently handled by the ``blank`` keyword argument (Matt Westcott)
- * Show 'required' asterisks for blocks inside required StreamFields (Matt Westcott)
- * Make image chooser "Select format" fields translatable (Helen Chapman, Thibaud Colas)
+* StreamField required status is now consistently handled by the ``blank`` keyword argument (Matt Westcott)
+* Show 'required' asterisks for blocks inside required StreamFields (Matt Westcott)
+* Make image chooser "Select format" fields translatable (Helen Chapman, Thibaud Colas)
 
 
 Upgrade considerations

+ 2 - 2
docs/releases/2.2.1.rst

@@ -13,5 +13,5 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
- * Prevent AppRegistryNotReady error when wagtail.contrib.sitemaps is in INSTALLED_APPS (Matt Westcott)
+* Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
+* Prevent AppRegistryNotReady error when wagtail.contrib.sitemaps is in INSTALLED_APPS (Matt Westcott)

+ 2 - 2
docs/releases/2.2.2.rst

@@ -13,5 +13,5 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Seek to the beginning of image files when uploading, to restore compatibility with django-storages Google Cloud and Azure backends (Mikalai Radchuk)
- * Respect next param on login (Loic Teixeira)
+* Seek to the beginning of image files when uploading, to restore compatibility with django-storages Google Cloud and Azure backends (Mikalai Radchuk)
+* Respect next param on login (Loic Teixeira)

+ 29 - 29
docs/releases/2.2.rst

@@ -25,37 +25,37 @@ The page search in the Wagtail admin now supports filtering by page type and ord
 Other features
 ~~~~~~~~~~~~~~
 
- * Added another valid AudioBoom oEmbed pattern (Bertrand Bordage)
- * Added ``annotate_score`` support to PostgreSQL search backend (Bertrand Bordage)
- * Pillow's image optimisation is now applied when saving PNG images (Dmitry Vasilev)
- * JS / CSS media files can now be associated with Draftail feature definitions (Matt Westcott)
- * The ``{% slugurl %}`` template tag is now site-aware (Samir Shah)
- * Added ``file_size`` field to documents (Karl Hobley)
- * Added ``file_hash`` field to images (Karl Hobley)
- * Update documentation (configuring Django for Wagtail) to contain all current settings options (Matt Westcott, LB (Ben Johnston))
- * Added ``defer`` flag to ``PageQuerySet.specific`` (Karl Hobley)
- * Snippets can now be deleted from the listing view (LB (Ben Johnston))
- * Increased max length of redirect URL field to 255 (Michael Harrison)
- * Added documentation for new JS/CSS media files association with Draftail feature definitions (Ed Henderson)
- * Added accessible colour contrast guidelines to the style guide (Catherine Farman)
- * Admin modal views no longer rely on JavaScript ``eval()``, for better CSP compliance (Matt Westcott)
- * Update editor guide for embeds and documents in rich text (Kevin Howbrook)
- * Improved performance of sitemap generation (Michael van Tellingen, Bertrand Bordage)
- * Added an internal API for autocomplete (Karl Hobley)
+* Added another valid AudioBoom oEmbed pattern (Bertrand Bordage)
+* Added ``annotate_score`` support to PostgreSQL search backend (Bertrand Bordage)
+* Pillow's image optimisation is now applied when saving PNG images (Dmitry Vasilev)
+* JS / CSS media files can now be associated with Draftail feature definitions (Matt Westcott)
+* The ``{% slugurl %}`` template tag is now site-aware (Samir Shah)
+* Added ``file_size`` field to documents (Karl Hobley)
+* Added ``file_hash`` field to images (Karl Hobley)
+* Update documentation (configuring Django for Wagtail) to contain all current settings options (Matt Westcott, LB (Ben Johnston))
+* Added ``defer`` flag to ``PageQuerySet.specific`` (Karl Hobley)
+* Snippets can now be deleted from the listing view (LB (Ben Johnston))
+* Increased max length of redirect URL field to 255 (Michael Harrison)
+* Added documentation for new JS/CSS media files association with Draftail feature definitions (Ed Henderson)
+* Added accessible colour contrast guidelines to the style guide (Catherine Farman)
+* Admin modal views no longer rely on JavaScript ``eval()``, for better CSP compliance (Matt Westcott)
+* Update editor guide for embeds and documents in rich text (Kevin Howbrook)
+* Improved performance of sitemap generation (Michael van Tellingen, Bertrand Bordage)
+* Added an internal API for autocomplete (Karl Hobley)
 
 Bug fixes
 ~~~~~~~~~
 
- * Handle all exceptions from ``Image.get_file_size`` (Andrew Plummer)
- * Fix display of breadcrumbs in ModelAdmin (LB (Ben Johnston))
- * Remove duplicate border radius of avatars (Benjamin Thurm)
- * Site.get_site_root_paths() preferring other sites over the default when some sites share the same root_page (Andy Babic)
- * Pages with missing model definitions no longer crash the API (Abdulmalik Abdulwahab)
- * Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
- * Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Andrew Crewdson, Matt Westcott)
- * Permission checks no longer prevent a non-live page from being unscheduled (Abdulmalik Abdulwahab)
- * Copy-paste between Draftail editors now preserves all formatting/content (Thibaud Colas)
- * Fix alignment of checkboxes and radio buttons on Firefox (Matt Westcott)
+* Handle all exceptions from ``Image.get_file_size`` (Andrew Plummer)
+* Fix display of breadcrumbs in ModelAdmin (LB (Ben Johnston))
+* Remove duplicate border radius of avatars (Benjamin Thurm)
+* Site.get_site_root_paths() preferring other sites over the default when some sites share the same root_page (Andy Babic)
+* Pages with missing model definitions no longer crash the API (Abdulmalik Abdulwahab)
+* Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
+* Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Andrew Crewdson, Matt Westcott)
+* Permission checks no longer prevent a non-live page from being unscheduled (Abdulmalik Abdulwahab)
+* Copy-paste between Draftail editors now preserves all formatting/content (Thibaud Colas)
+* Fix alignment of checkboxes and radio buttons on Firefox (Matt Westcott)
 
 Upgrade considerations
 ======================
@@ -65,8 +65,8 @@ JavaScript templates in modal workflows are deprecated
 
 The ``wagtail.admin.modal_workflow`` module (used internally by Wagtail to handle modal popup interfaces such as the page chooser) has been updated to avoid returning JavaScript code as part of HTTP responses. User code that relies on this functionality can be updated as follows:
 
- * Eliminate template tags from the .js template. Any dynamic data needed by the template can instead be passed in a dict to ``render_modal_workflow``, as a keyword argument ``json_data``; this data will then be available as the second parameter of the JavaScript function.
- * At the point where you call the ``ModalWorkflow`` constructor, add an ``onload`` option - a dictionary of functions to be called on loading each step of the workflow. Move the code from the .js template into this dictionary. Then, on the call to ``render_modal_workflow``, rather than passing the .js template name (which should now be replaced by ``None``), pass a ``step`` item in the ``json_data`` dictionary to indicate the ``onload`` function to be called.
+* Eliminate template tags from the .js template. Any dynamic data needed by the template can instead be passed in a dict to ``render_modal_workflow``, as a keyword argument ``json_data``; this data will then be available as the second parameter of the JavaScript function.
+* At the point where you call the ``ModalWorkflow`` constructor, add an ``onload`` option - a dictionary of functions to be called on loading each step of the workflow. Move the code from the .js template into this dictionary. Then, on the call to ``render_modal_workflow``, rather than passing the .js template name (which should now be replaced by ``None``), pass a ``step`` item in the ``json_data`` dictionary to indicate the ``onload`` function to be called.
 
 Additionally, if your code calls ``loadResponseText`` as part of a jQuery AJAX callback, this should now be passed all three arguments from the callback (the response data, status string and XMLHttpRequest object).
 

+ 21 - 21
docs/releases/2.3.rst

@@ -30,32 +30,32 @@ Colour contrast within the admin interface has been improved, and now complies w
 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)
+* 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)
+* 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

+ 34 - 34
docs/releases/2.4.rst

@@ -22,40 +22,40 @@ When using the ``wagtail start`` command to make a new site, users will now be g
 Other features
 ~~~~~~~~~~~~~~
 
- * Added support for Python 3.7 (Matt Westcott)
- * Added ``max_count`` option on page models to limit the number of pages of a particular type that can be created (Dan Braghis)
- * Document and image choosers now show the document / image's collection (Alejandro Garza, Janneke Janssen)
- * New ``image_url`` template tag allows to generate dynamic image URLs, so image renditions are being created outside the main request which improves performance. Requires extra configuration, see :doc:`/advanced_topics/images/image_serve_view` (Yannick Chabbert, Dan Braghis).
- * Added ability to run individual tests through tox (Benjamin Bach)
- * Collection listings are now ordered by name (Seb Brown)
- * Added ``file_hash`` field to documents (Karl Hobley, Dan Braghis)
- * Added last login to the user overview (Noah B Johnson)
- * Changed design of image editing page (Janneke Janssen, Ben Enright)
- * Added Slovak character map for JavaScript slug generation (Andy Chosak)
- * Make documentation links on welcome page work for prereleases (Matt Westcott)
- * Allow overridden ``copy()`` methods in ``Page`` subclasses to be called from the page copy view (Robert Rollins)
- * Users without a preferred language set on their profile now use language selected by Django's ``LocaleMiddleware`` (Benjamin Bach)
- * Added hooks to customise the actions menu on the page create/edit views (Matt Westcott)
- * Cleanup: Use ``functools.partial()`` instead of ``django.utils.functional.curry()`` (Sergey Fedoseev)
- * Added ``before_move_page`` and ``after_move_page`` hooks (Maylon Pedroso)
- * Bulk deletion button for snippets is now hidden until items are selected (Karl Hobley)
+* Added support for Python 3.7 (Matt Westcott)
+* Added ``max_count`` option on page models to limit the number of pages of a particular type that can be created (Dan Braghis)
+* Document and image choosers now show the document / image's collection (Alejandro Garza, Janneke Janssen)
+* New ``image_url`` template tag allows to generate dynamic image URLs, so image renditions are being created outside the main request which improves performance. Requires extra configuration, see :doc:`/advanced_topics/images/image_serve_view` (Yannick Chabbert, Dan Braghis).
+* Added ability to run individual tests through tox (Benjamin Bach)
+* Collection listings are now ordered by name (Seb Brown)
+* Added ``file_hash`` field to documents (Karl Hobley, Dan Braghis)
+* Added last login to the user overview (Noah B Johnson)
+* Changed design of image editing page (Janneke Janssen, Ben Enright)
+* Added Slovak character map for JavaScript slug generation (Andy Chosak)
+* Make documentation links on welcome page work for prereleases (Matt Westcott)
+* Allow overridden ``copy()`` methods in ``Page`` subclasses to be called from the page copy view (Robert Rollins)
+* Users without a preferred language set on their profile now use language selected by Django's ``LocaleMiddleware`` (Benjamin Bach)
+* Added hooks to customise the actions menu on the page create/edit views (Matt Westcott)
+* Cleanup: Use ``functools.partial()`` instead of ``django.utils.functional.curry()`` (Sergey Fedoseev)
+* Added ``before_move_page`` and ``after_move_page`` hooks (Maylon Pedroso)
+* Bulk deletion button for snippets is now hidden until items are selected (Karl Hobley)
 
 Bug fixes
 ~~~~~~~~~
 
- * Query objects returned from ``PageQuerySet.type_q`` can now be merged with ``|`` (Brady Moe)
- * Add ``rel="noopener noreferrer"`` to target blank links (Anselm Bradford)
- * Additional fields on custom document models now show on the multiple document upload view (Robert Rollins, Sergey Fedoseev)
- * Help text does not overflow when using a combination of BooleanField and FieldPanel in page model (Dzianis Sheka)
- * Document chooser now displays more useful help message when there are no documents in Wagtail document library (gmmoraes, Stas Rudakou)
- * Allow custom logos of any height in the admin menu (Meteor0id)
- * Allow nav menu to take up all available space instead of scrolling (Meteor0id)
- * Users without the edit permission no longer see "Edit" links in list of pages waiting for moderation (Justin Focus, Fedor Selitsky)
- * Redirects now return 404 when destination is unspecified or a page with no site (Hillary Jeffrey)
- * Refactor all breakpoint definitions, removing style overlaps (Janneke Janssen)
- * Updated draftjs_exporter to 2.1.5 to fix bug in handling adjacent entities (Thibaud Colas)
- * Page titles consisting only of stopwords now generate a non-empty default slug (Andy Chosak, Janneke Janssen)
- * Sitemap generator now allows passing a sitemap instance in the URL configuration (Mitchel Cabuloy, Dan Braghis)
+* Query objects returned from ``PageQuerySet.type_q`` can now be merged with ``|`` (Brady Moe)
+* Add ``rel="noopener noreferrer"`` to target blank links (Anselm Bradford)
+* Additional fields on custom document models now show on the multiple document upload view (Robert Rollins, Sergey Fedoseev)
+* Help text does not overflow when using a combination of BooleanField and FieldPanel in page model (Dzianis Sheka)
+* Document chooser now displays more useful help message when there are no documents in Wagtail document library (gmmoraes, Stas Rudakou)
+* Allow custom logos of any height in the admin menu (Meteor0id)
+* Allow nav menu to take up all available space instead of scrolling (Meteor0id)
+* Users without the edit permission no longer see "Edit" links in list of pages waiting for moderation (Justin Focus, Fedor Selitsky)
+* Redirects now return 404 when destination is unspecified or a page with no site (Hillary Jeffrey)
+* Refactor all breakpoint definitions, removing style overlaps (Janneke Janssen)
+* Updated draftjs_exporter to 2.1.5 to fix bug in handling adjacent entities (Thibaud Colas)
+* Page titles consisting only of stopwords now generate a non-empty default slug (Andy Chosak, Janneke Janssen)
+* Sitemap generator now allows passing a sitemap instance in the URL configuration (Mitchel Cabuloy, Dan Braghis)
 
 
 Upgrade considerations
@@ -72,12 +72,12 @@ Custom image model migrations created on Wagtail <1.8 may fail
 
 Projects with a custom image model (see :ref:`custom_image_model`) created on Wagtail 1.7 or earlier are likely to have one or more migrations that refer to the (now-deleted) ``wagtailimages.Filter`` model. In Wagtail 2.4, the migrations that defined this model have been squashed, which may result in the error ``ValueError: Related model 'wagtailimages.Filter' cannot be resolved`` when bringing up a new instance of the database. To rectify this, check your project's migrations for ``ForeignKey`` references to ``wagtailimages.Filter``, and change them to ``IntegerField`` definitions. For example, the line:
 
-  .. code-block:: python
+.. code-block:: python
 
-    ('filter', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailimages.Filter')),
+  ('filter', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailimages.Filter')),
 
 should become:
 
-  .. code-block:: python
+.. code-block:: python
 
-    ('filter', models.IntegerField(blank=True, null=True)),
+  ('filter', models.IntegerField(blank=True, null=True)),

+ 1 - 1
docs/releases/2.5.1.rst

@@ -13,4 +13,4 @@ What's new
 Bug fixes
 ~~~~~~~~~
 
- * Prevent crash when comparing StructBlocks in revision history (Adrian Turjak, Matt Westcott)
+* Prevent crash when comparing StructBlocks in revision history (Adrian Turjak, Matt Westcott)

Some files were not shown because too many files changed in this diff