Previously, if a developer wanted to use a custom Manager on their Page
subclass, some fairly hacky hacks were required. Now, the `objects`
attribute is only overridden if it is a plain `Manager`. If it is
anything else, it is left alone. A system check has been added to ensure
that all `Page` managers inherit from `PageManager`
Django 1.9 requires this line before importing any models. Autodoc
imported models to get their docstrings, causing errors in the build
process.
Fixes#2014.
These two tests are used when checking if a new page type can be created
under a page instance, or if an existing page type can move under a page
instance.
Iterating over get_page_models means that these will be visited once
per superclass. To avoid this, we filter the page list to those exactly
matching the page class. This is done via a new `exact_type` method
on `PageQuerySet`.
The SiteManager class was not used on the Site model, or anywhere else.
This was not caught by the tests, because nothing tested the relevant
attributes on the Site model, nor were they used in the code base. Tests
have been added now.
The `alt` attribute that was automatically generated as part of the
`{% image %}` tag could not be overridden. If template authors passed
their own `alt="..."` attribute in, two would be printed out instead
of the default one being overridden.
The relevant code has been refactored to build a dict of attributes,
allowing the default set to be overridden, and then printing them using
`flatatt`.
Fixes#1933
The Elasticsearch tests now depend on an environment variable being set so we can safely install elasticsearch-py without Wagtail automatically assuming Elasticsearch is installed and running the tests.
This makes developer setup slightly easier, but also opens up the possibility for running some of the ES tests that don't depend on a running ES instance.