0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-12-01 11:41:20 +01:00
wagtail/docs/releases/2.16.md
2022-01-07 16:37:21 +00:00

2.6 KiB

Wagtail 2.16 release notes - IN DEVELOPMENT

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

What's new

Other features

  • Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidjani Dia)
  • Added Aging Pages report (Tidjani Dia)
  • Add more SketchFab oEmbed patterns for models (Tom Usher)
  • Add collapse option to StreamField, StreamBlock, and ListBlock which will load all sub-blocks initially collapsed (Matt Westcott)
  • Private pages can now be fetched over the API (Nabil Khalil)
  • Added alias_of field to the pages API (Dmitrii Faiazov)
  • Add support for Azure CDN and Front Door front-end cache invalidation (Tomasz Knapik)
  • Fixed default_app_config deprecations for Django >= 3.2 (Tibor Leupold)
  • Removed WOFF fonts
  • Improved styling of workflow timeline modal view (Tidjani Dia)
  • Add secondary actions menu in edit page headers (Tidjani Dia)

Bug fixes

  • Accessibility fixes for Windows high contrast mode; Dashboard icons colour and contrast (Sakshi Uppoor)
  • Rename additional 'spin' CSS animations to avoid clashes with other libraries (Kevin Gutiérrez)
  • Pages are refreshed from database on create before passing to hooks. Page aliases get correct first_published_date and last_published_date (Dan Braghis)
  • Additional login form fields from WAGTAILADMIN_USER_LOGIN_FORM are now rendered correctly (Michael Karamuth)

Upgrade considerations

Removed support for Python 3.6

Python 3.6 is no longer supported as of this release; please upgrade to Python 3.7 or above before upgrading Wagtail.

StreamField ListBlock now returns ListValue rather than a list instance

The data type returned as the value of a ListBlock is now a custom class, ListValue, rather than a Python list object. This change allows it to provide a bound_blocks property that exposes the list items as BoundBlock objects rather than plain values. ListValue objects are mutable sequences that behave similarly to lists, and so all code that iterates over them, accesses individual elements, or manipulates them should continue to work. However, code that specifically expects a list object (e.g. using isinstance or testing for equality against a list) may need to be updated. For example, a unit test that tests the value of a ListBlock as follows:

    self.assertEqual(page.body[0].value, ['hello', 'goodbye'])

should be rewritten as:

    self.assertEqual(list(page.body[0].value), ['hello', 'goodbye'])