diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 51ffe02..999d66e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python: ['3.9', '3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v3 @@ -37,33 +37,33 @@ jobs: env: DB: sqlite - test-postgres: - runs-on: ubuntu-latest - strategy: - matrix: - python: ['3.8', '3.9', '3.10', '3.11', '3.12'] + # test-postgres: + # runs-on: ubuntu-latest + # strategy: + # matrix: + # python: ['3.12'] - services: - postgres: - image: ${{ matrix.postgres || 'postgres:12' }} - env: - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + # services: + # postgres: + # image: ${{ matrix.postgres || 'postgres:12' }} + # env: + # POSTGRES_PASSWORD: postgres + # ports: + # - 5432:5432 + # options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - - name: Install - run: | - python -m pip install --upgrade pip setuptools wheel - python -m pip install .[ci] - - name: Test - run: tox # -- --exclude exclude-in-github-actions # temporary workaround - env: - DATABASE_URL: postgres://postgres:postgres@localhost:5432/wagtail_devtools - DB: postgres + # steps: + # - uses: actions/checkout@v3 + # - name: Set up Python ${{ matrix.python }} + # uses: actions/setup-python@v4 + # with: + # python-version: ${{ matrix.python }} + # - name: Install + # run: | + # python -m pip install --upgrade pip setuptools wheel + # python -m pip install .[ci] + # - name: Test + # run: tox # -- --exclude exclude-in-github-actions # temporary workaround + # env: + # DATABASE_URL: postgres://postgres:postgres@localhost:5432/wagtail_devtools + # DB: postgres diff --git a/README.md b/README.md index f4a6118..e3d4fb3 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ A set of developer tools in the form of management commands. ## Supported versions -- Python 3.8+ -- Django 3.2+ -- Wagtail 4.1+ +- Python 3.9+ +- Django 4.2+ +- Wagtail 5.2+ ## Features diff --git a/pyproject.toml b/pyproject.toml index 5eadf12..ba04ff6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,23 +15,24 @@ classifiers = [ "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Framework :: Django", - "Framework :: Django :: 3.2", - "Framework :: Django :: 4.1", "Framework :: Django :: 4.2", + "Framework :: Django :: 5.0", + "Framework :: Django :: 5.1", "Framework :: Wagtail", "Framework :: Wagtail :: 4", "Framework :: Wagtail :: 5", + "Framework :: Wagtail :: 6", ] -requires-python = ">=3.8" +requires-python = ">=3.9" dynamic = ["version"] dependencies = [ - "Django>=3.2", - "Wagtail>=4.1,<6.0", + "Django>=4.2", + "Wagtail>=4.2", ] [project.optional-dependencies] testing = [ diff --git a/tox.ini b/tox.ini index d09ed35..9062931 100644 --- a/tox.ini +++ b/tox.ini @@ -3,13 +3,12 @@ skipsdist = True usedevelop = True envlist = - python{3.8,3.9,3.10,3.11}-django{3.2,4.1}-wagtail{4.1,4.2}-{sqlite,postgres} - python{3.8,3.9,3.10,3.11}-django{3.2,4.1,4.2}-wagtail{5.0,5.1,5.2}-{sqlite,postgres} - python3.12-django5.0-wagtail5.2-sqlite + python3.9-django4.2-wagtail{5.2,6.0,6.1,6.2,6.3}-wagtailmodeladmin-sqlite + python{3.10,3.11,3.12}-django{4.2,5.0}-wagtail{5.2,6.0,6.1,6.2,6.3}-wagtailmodeladmin-sqlite + python3.12-django5.1-wagtail6.3-wagtailmodeladmin-sqlite [gh-actions] python = - 3.8: python3.8 3.9: python3.9 3.10: python3.10 3.11: python3.11 @@ -27,7 +26,6 @@ commands = coverage report -m basepython = - python3.8: python3.8 python3.9: python3.9 python3.10: python3.10 python3.11: python3.11 @@ -36,16 +34,17 @@ basepython = deps = coverage - django3.2: Django>=3.2,<4.0 - django4.1: Django>=4.1,<4.2 django4.2: Django>=4.2,<4.3 django5.0: Django>=5.0,<5.1 + django5.1: Django>=5.1,<5.2 - wagtail4.1: wagtail>=4.1,<4.2 - wagtail4.2: wagtail>=4.2,<4.3 - wagtail5.0: wagtail>=5.0,<5.1 - wagtail5.1: wagtail>=5.1,<5.2 wagtail5.2: wagtail>=5.2,<5.3 + wagtail6.0: wagtail>=6.0,<6.1 + wagtail6.1: wagtail>=6.1,<6.2 + wagtail6.2: wagtail>=6.2,<6.3 + wagtail6.3: wagtail>=6.3,<6.4 + + wagtailmodeladmin: wagtail-modeladmin postgres: psycopg2>=2.6 diff --git a/wagtail_devtools/api/serializers.py b/wagtail_devtools/api/serializers.py index 1db2f30..d2a78d3 100644 --- a/wagtail_devtools/api/serializers.py +++ b/wagtail_devtools/api/serializers.py @@ -1,6 +1,6 @@ from django.apps import apps from wagtail.admin.admin_url_finder import AdminURLFinder -from wagtail.models.collections import Collection +from wagtail.models import Collection from wagtail.snippets.models import get_snippet_models from wagtail_devtools.api.dataclasses import ( diff --git a/wagtail_devtools/management/commands/_base_admin_responses.py b/wagtail_devtools/management/commands/_base_admin_responses.py index ad03449..e8cd535 100644 --- a/wagtail_devtools/management/commands/_base_admin_responses.py +++ b/wagtail_devtools/management/commands/_base_admin_responses.py @@ -4,14 +4,20 @@ from django.conf import settings from django.contrib.auth import get_user_model from django.core.management.base import BaseCommand, CommandError +from wagtail import VERSION as WAGTAIL_VERSION from wagtail.admin.admin_url_finder import AdminURLFinder from wagtail.admin.utils import get_admin_base_url -from wagtail.contrib.modeladmin.helpers import AdminURLHelper + + +if WAGTAIL_VERSION < (6, 0): + from wagtail.contrib.modeladmin.helpers import AdminURLHelper +else: + from wagtail_modeladmin.helpers import AdminURLHelper + from wagtail.contrib.settings.registry import registry as settings_registry from wagtail.documents import get_document_model from wagtail.images import get_image_model -from wagtail.models import get_page_models -from wagtail.models.collections import Collection +from wagtail.models import Collection, get_page_models from wagtail.snippets.models import get_snippet_models diff --git a/wagtail_devtools/test/management/commands/build_fixtures.py b/wagtail_devtools/test/management/commands/build_fixtures.py index a36821e..99ce1d1 100644 --- a/wagtail_devtools/test/management/commands/build_fixtures.py +++ b/wagtail_devtools/test/management/commands/build_fixtures.py @@ -9,8 +9,7 @@ from wagtail.contrib.search_promotions.models import Query, SearchPromotion from wagtail.documents.models import Document as WagtailDocument from wagtail.images.models import Image as WagtailImage -from wagtail.models import Page, Site -from wagtail.models.collections import Collection +from wagtail.models import Collection, Page, Site from wagtail_devtools.test.models import ( FormFieldOne, diff --git a/wagtail_devtools/test/settings.py b/wagtail_devtools/test/settings.py index 7723b1b..e8651e3 100644 --- a/wagtail_devtools/test/settings.py +++ b/wagtail_devtools/test/settings.py @@ -12,6 +12,8 @@ import dj_database_url +from wagtail import VERSION as WAGTAIL_VERSION + # Build paths inside the project like this: os.path.join(PROJECT_DIR, ...) PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -47,7 +49,7 @@ "wagtail.search", "wagtail.admin", "wagtail.api.v2", - "wagtail.contrib.modeladmin", + "wagtail.contrib.modeladmin" if WAGTAIL_VERSION < (6, 0) else "wagtail_modeladmin", "wagtail.contrib.routable_page", "wagtail.contrib.styleguide", "wagtail.sites", diff --git a/wagtail_devtools/test/tests/test_build_fixtures.py b/wagtail_devtools/test/tests/test_build_fixtures.py index a1e8d52..2f928f8 100644 --- a/wagtail_devtools/test/tests/test_build_fixtures.py +++ b/wagtail_devtools/test/tests/test_build_fixtures.py @@ -12,8 +12,7 @@ from wagtail.contrib.settings.registry import registry as settings_registry from wagtail.documents import get_document_model from wagtail.images import get_image_model -from wagtail.models import Page, Site -from wagtail.models.collections import Collection +from wagtail.models import Collection, Page, Site from wagtail.snippets.models import get_snippet_models diff --git a/wagtail_devtools/test/views.py b/wagtail_devtools/test/views.py index e6145de..ccda85e 100644 --- a/wagtail_devtools/test/views.py +++ b/wagtail_devtools/test/views.py @@ -4,8 +4,14 @@ from django.shortcuts import render from django.template.response import TemplateResponse from django.utils import timezone +from wagtail import VERSION as WAGTAIL_VERSION from wagtail.models import Page -from wagtail.search.models import Query + + +if WAGTAIL_VERSION < (6, 0): + from wagtail.search.models import Query +else: + from wagtail.contrib.search_promotions.models import Query def search(request): diff --git a/wagtail_devtools/test/wagtail_hooks.py b/wagtail_devtools/test/wagtail_hooks.py index b813b52..0a24155 100644 --- a/wagtail_devtools/test/wagtail_hooks.py +++ b/wagtail_devtools/test/wagtail_hooks.py @@ -1,7 +1,13 @@ from django.urls import path, reverse +from wagtail import VERSION as WAGTAIL_VERSION from wagtail import hooks from wagtail.admin.menu import Menu, MenuItem, SubmenuMenuItem -from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register + + +if WAGTAIL_VERSION < (6, 0): + from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register +else: + from wagtail_modeladmin.options import ModelAdmin, modeladmin_register from wagtail_devtools.test.views import example_calendar, example_calendar_month