========================================== Wagtail 2.0 release notes - IN DEVELOPMENT ========================================== .. contents:: :local: :depth: 1 What's new ========== Reorganised modules ~~~~~~~~~~~~~~~~~~~ The modules that make up Wagtail have been renamed and reorganised, to avoid the repetition in names like ``wagtail.wagtailcore.models`` (originally an artefact of app naming limitations in Django 1.6) and to improve consistency. While this will require some up-front work to upgrade existing Wagtail sites, we believe that this will be a long-term improvement to the developer experience, improving readability of code and reducing errors. This change was implemented by Karl Hobley and Matt Westcott. Other features ~~~~~~~~~~~~~~ * Moved Wagtail API v1 implementation (``wagtail.contrib.api``) to an `external app `_ (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) 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) Upgrade considerations ====================== Removed support for Python 2.7, Django 1.8 and Django 1.10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Python 2.7, Django 1.8 and Django 1.10 are no longer supported in this release. You are advised to upgrade your project to Python 3 and Django 1.11 before upgrading to Wagtail 2.0. Wagtail module path updates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Many of the module paths within Wagtail have been reorganised: +-----------------------------------------+-----------------------------------+-----------------------------------+ | Old name | New name | Notes | +=========================================+===================================+===================================+ | wagtail.wagtailcore | wagtail.core | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailadmin | wagtail.admin | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtaildocs | wagtail.documents | 'documents' no longer abbreviated | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailembeds | wagtail.embeds | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailimages | wagtail.images | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailsearch | wagtail.search | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailsites | wagtail.sites | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailsnippets | wagtail.snippets | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailusers | wagtail.users | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailforms | wagtail.contrib.forms | Moved into 'contrib' | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.wagtailredirects | wagtail.contrib.redirects | Moved into 'contrib' | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.contrib.wagtailapi | *removed* | API v1, removed in this release | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.contrib.wagtailfrontendcache | wagtail.contrib.frontend_cache | Underscore added | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.contrib.wagtailroutablepage | wagtail.contrib.routable_page | Underscore added | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.contrib.wagtailsearchpromotions | wagtail.contrib.search_promotions | Underscore added | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.contrib.wagtailsitemaps | wagtail.contrib.sitemaps | | +-----------------------------------------+-----------------------------------+-----------------------------------+ | wagtail.contrib.wagtailstyleguide | wagtail.contrib.styleguide | | +-----------------------------------------+-----------------------------------+-----------------------------------+ References to these module paths within your Wagtail project need to be updated when you upgrade to Wagtail 2.0. This includes: * ``import`` lines * Paths specified in settings, such as ``INSTALLED_APPS``, ``MIDDLEWARE`` and ``WAGTAILSEARCH_BACKENDS`` * Fields and blocks referenced within migrations, such as ``wagtail.wagtailcore.fields.StreamField`` and ``wagtail.wagtailcore.blocks.RichTextBlock`` However, note that this only applies to dotted module paths beginning with ``wagtail.``. App names that are *not* part of a dotted module path should be left unchanged - in this case, the ``wagtail`` prefix is still required to avoid clashing with other apps that might exist in the project with names such as ``admin`` or ``images``. The following should be left unchanged: * Foreign keys specifying a model as ``'app_name.ModelName'``, e.g. ``models.ForeignKey('wagtailimages.Image',...)`` * App labels used in database table names, content types or permissions * Paths to templates and static files, e.g. when :ref:`overriding admin templates with custom branding ` * Template tag library names, e.g. ``{% load wagtailcore_tags %}`` Removed support for Elasticsearch 1.x ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Elasticsearch 1.x is no longer supported in this release. Please upgrade to a 2.x or 5.x release of Elasticsearch before upgrading to Wagtail 2.0.