Wagtail version 3+ compatibility
Siburg opened this issue · 2 comments
The package is currently limited to wagtail version >1.4 and <3.0. All of those versions are out of support: https://github.com/wagtail/wagtail/wiki/Release-schedule.
I propose to submit a PR that will:
- fix the
panels
in theMetadataPageMixin
so it will continue to work with Wagtail versions 3+; - increase minimum requirement for Wagtail to version 2.13, because it's the minimum version that supports Django 3.2;
- upgrade the example app to use Django 3.2 and Wagtail 4.1, because those are LTS releases;
I think we could also drop support for Python 3.6, and add support for more recent Python versions.
I propose deploying the changes as a new version 3.0, because it will have breaking changes.
please do
On second thoughts, trying to maintain compatibility with wagtail versions before 3.0 looks too hard. The trouble is the changes to module paths (https://docs.wagtail.org/en/stable/releases/3.0.html#changes-to-module-paths) in Wagtail 3.0.
I started amending wagtailmetadata/models.py
like this:
from wagtail import VERSION
if VERSION[0] >= 3:
from wagtail.admin.panels import FieldPanel as SearchImagePanel
from wagtail.models import Site
else:
from wagtail.core.models import Site
from wagtail.images.edit_handlers import ImageChooserPanel as SearchImagePanel
And then using panels = [SearchImagePanel("search_image")]
in the MetadataPageMixin
. That looks OK by itself to me.
However, there are many more locations where changes like that are needed. For example, in wagtailmetadata/tests/settings.py
I used:
if VERSION[0] >= 3:
wagtail_app_str = "wagtail"
else:
wagtail_app_str = "wagtail.core"
so that I could use that wagtail_app_str
in the INSTALLED_APPS
and MIDDLEWARE
settings.
But then I encountered the example/puput_migrations
directory, and amending that for dual versions starts to become too impractical.
So I now propose to increase the minimum Wagtail version to 3.0. Users with older wagtail version will need to continue using a version 2 of this package.