* Remove spurious action button on 'create workflow task' view
Fixes #7758. 1fe36d2597 fixed the generic base template to stop the `action_url` from leaking into the header, but create_task.html bypasses the base template so needs the fix applying separately.
* Remove spurious action button on 'edit workflow task' view
* Remove spurious action button on 'edit workflow' view
* Moved Page.copy implementation into an external function
* Convert copy_page function into a class
* Implement PageCopyAction.execute()
* Implement CopyPageAction.check()
To allow checking the action ahead-of-time
* Make page copy view use PageCopyAction
* Add page copy Admin API
* Fix transform operations in Filter.run() when image has been re-oriented
Add an optional `transform_width` and `transform_height` arguments to
`wagtail.images.models.Filter.get_transform().
If both are passed in, then use them otherwise image.width and
image.height for the ImageTransform
* * Changed dimension arguments on Filter.get_transform() to be a tuple of (width, height).
* Added test cases for wagtail.images.models.Rendition which use jpg
files with exif orientation specified to validate that the renditions
are created with the correct orientation. These tests and the images
themselves come from Willow's tests for the same functionality.
* Added rendition orientation tests for pixel positions to ensure renditions on images with exif orientation are still oriented correctly
The /models pattern is what is documented in the Sketchfab oEmbed docs.
The /3d-models pattern is what you'd get by copying and pasting the URL from browsing the site.
https://sketchfab.com/developers/oembed
Fixes #7690. We need to retrieve the specific page instance before `save_revision`, or we'll end up clearing the subclass's fields (resulting in a ValidationError if any were required, or a published version with blanked fields if not).
Fixes #7681. Rather than a hide_bulk_actions flag that non-explorer views have to add to get the old behaviour, use a show_bulk_actions flag that's enabled on the views that do want it.
The django-filter package has changed its versioning from a semver to a year based one. The latest version (21.1) is the same as the old one that wagtail supported (2.4): https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst
So we could just bumb the requirement to `<=22` (I think it's fine to use that because the readme claims that breaking changes will be introduced to version+2 so breaking versions for v.21 will be introduced to v.23)
The current naming is conflicting with how the version number parts are
called accoring to semantic versioning. Wagtail does not strictly follow
semantic versioning, but it still seems reasonable to adopt the same
terminology as the rest of the world.
See related discussion in #7336 (in particular [this comment by @gasman](https://github.com/wagtail/wagtail/issues/7336#issuecomment-954223018))