# Wagtail 7.1 release notes - IN DEVELOPMENT _Unreleased_ ```{contents} --- local: depth: 1 --- ``` ## What's new ### Site setting permissions The [](settings) app now allows permission over site settings to be granted on a per-site basis. This makes it possible to give non-superuser accounts full control over the configuration of an individual site. This feature was developed by Matt Westcott. ### Other features * Add iHeart oembed provider (Storm Heg) * Add locale-aware `NumberColumn` to display numbers in universal listings (Baptiste Mispelon) * Add ability for the header breadcrumbs to save their open/closed state across navigation & refresh (Srishti Jaiswal) * Render listing buttons as template components (Sage Abdullah) * Define default `GenericRelations` for `RevisionMixin` and `WorkflowMixin`, to avoid issues with deletion cascades (Sage Abdullah) * Update Twitter oembed provider to recognise x.com links (manu) * Document and relocate the `init_new_page` signal (Maciek Baron) * Use `requests` to access oEmbed endpoints, for more robust SSL certificate handling (Matt Westcott) * Ensure that bulk deletion views respect protected foreign keys (Sage Abdullah) * Add minimum length validation for `RichTextBlock` and `RichTextField` (Alec Baron) * Allow `SnippetChooserBlock`'s `icon` to take precedence over `SnippetViewSet.icon` (Matt Westcott) * Allow searching the users index on custom fields (Paul Craciunoiu, Sage Abdullah) * Support `preserve-svg` in Jinja2 image tags (Vishesh Garg) * Recognise `preserve-svg` as a filter when calling `Image.get_rendition` directly (Richard Allen) * Add support for `preserve-svg` for `Image.get_renditions`, picture, and srcset_image tags (Matt Westcott) * Include `TypedTableBlock` content when indexing for search (Charan T M) * Preserve query parameters when redirecting from the API `find` view to the `detail` view (Andrew Hosgood) * Add 'Edit' button to success message after copying page (Dhruvi Patel) * Restrict file dialog in multiple image uploader to the allowed image file types (mubarak-mustopha) ### Bug fixes * Handle lazy translation strings as `preview_value` for `RichTextBlock` (Seb Corbin) * Fix handling of newline-separated choices in form builder when using non-windows newline characters (Baptiste Mispelon) * Ensure `WAGTAILADMIN_LOGIN_URL` is respected when logging out of the admin (Antoine Rodriguez, Ramon de Jezus) * Fix behaviour of `ViewSet.inject_view_methods` with multiple methods (Gorlik) * Preserve query strings in URLs submitted to CloudFront for invalidation (Jigyasu Rajput) * Handle non-JSON-safe fields in `exclude_fields_in_copy` (Matt Westcott) * Allow upload of AVIF images through image chooser on Firefox (Matt Westcott) * Accept any string beginning with 'y' as confirmation for `import_redirects` command (Matt Westcott) * Fix error when accessing the submissions listing view with a non-form page (Sage Abdullah) * Replace inline styles with CSS classes in HTML files (Srishti Jaiswal) * Refactor remaining inline styles to avoid unsafe-inline style-src CSP (Chiemezuo Akujobi) ### Documentation * Add missing tag library imports to footer template code in tutorial (Dimaco) ### Maintenance * Refactor `get_embed` to remove `finder` argument which was only used for mocking in unit tests (Jigyasu Rajput) * Simplify handling of `None` values in `TypedTableBlock` (Jigyasu Rajput) * Remove squash.io configuration (Sage Abdullah) * Use `utf8mb4` charset and collation for MySQL test database (Sage Abdullah) * Add `django.contrib.postgres` to test settings `INSTALLED_APPS` (Sage Abdullah) ## Upgrade considerations - changes affecting all projects ## Upgrade considerations - deprecation of old functionality ## Upgrade considerations - changes affecting Wagtail customizations ### Deprecation of `PageListingButton`, `SnippetListingButton`, and `UserListingButton` The `PageListingButton`, `SnippetListingButton`, and `UserListingButton` classes have been deprecated in favour of the generic `ListingButton` and `Button` classes. The `PageListingButton` class was previously documented as part of the [`register_page_listing_buttons`](register_page_listing_buttons) hook. If you used this hook to add buttons to the page listing, you should now replace `wagtail.admin.widgets.PageListingButton` with `wagtail.admin.widgets.ListingButton`. Using the `PageListingButton` class will continue to work for now, but will raise a deprecation warning. The `SnippetListingButton` and `UserListingButton` classes were previously documented as part of the [`register_snippet_listing_buttons`](register_snippet_listing_buttons) and [`register_user_listing_buttons`](register_user_listing_buttons) hooks, respectively. If you used these hooks to add buttons to the snippet or user listing, you should now replace `wagtail.snippets.widgets.SnippetListingButton` and `wagtail.users.widgets.UserListingButton` with one of the following: - Use `wagtail.admin.widgets.Button` if you want the button to appear as an item inside the "More" actions dropdown in the listing. - Use `wagtail.admin.widgets.ListingButton` if you want the button to appear as a top-level button in the listing. Using the `SnippetListingButton` or `UserListingButton` classes will continue to work for now, but will raise a deprecation warning. The `PageListingButton`, `SnippetListingButton`, and `UserListingButton` classes will be removed in a future release. ### Using `ListingButton` in `IndexView.get_list_more_buttons` now renders the button as a top-level button If you have overridden the undocumented `get_list_more_buttons` method on a generic `IndexView` subclass (e.g. for a `ModelViewSet`) and used the `ListingButton` class to add buttons to the "More" actions dropdown, these buttons will now be rendered as top-level buttons in the listing. If you want the buttons to appear inside the "More" actions dropdown, you should use the `Button` class instead. ### `init_new_page` moved to `wagtail.signals` The [](init_new_page_signal) signal, previously defined in `wagtail.admin.signals`, has now been moved to `wagtail.signals`. Any import lines referencing the old location need to be updated. ## Upgrade considerations - changes to undocumented internals