Stylistically this sentence is somewhat content-free (if the API is really "relatively straightforward", users can see that for themselves rather than us informing them of that fact...), and we don't want to encourage people to use undocumented methods (because we can't guarantee that the API for them will remain stable).
Most of the samples were already 4-space indented, but a few were using 2-space,
which is both inconsistent and, when it happened with Python code samples,
incompatible with PEP8.
Generating links with `link text <./path/to/doc#anchor>`__ does not work for html.
It produces a link to `./path/to/doc#anchor` instead of `./path/to/doc.html#anchor`.
It would be tempting to add `.html` before `#` but would likely cause some more issues
when generating the documentation as pdf or epub.
References on the other hand will work regardless of the output format.
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`.
All `.. code::` instances have been changed to use `.. code-block::`,
and have been properly formatted. The syntax names have been normalised,
so all django templates use the `html+django` syntax, shell commands use
`sh`, and plain text uses `text`.
`is_creatable` better reflects what it is used for, and stops any
confusion between Wagtail's `is_abstract` and Django's `Meta.abstract`.
`is_creatable` takes in to account `Meta.abstract` now, so developers
will no longer need to set both `is_abstract` and `Meta.abstract`.
Documentation for the new attribute has been added, as well as tests.