diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 181986b..9255113 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -31,19 +31,13 @@ jobs:
strategy:
matrix:
- python: ['3.8', '3.12']
- django: ['4.2']
- wagtail: ['5.2', '6.0', '6.1']
+ python: ['3.12']
+ django: ['4.2', '5.0']
+ wagtail: ['6.2']
include:
- - python: '3.12'
- django: '5.0'
- wagtail: '5.2'
- - python: '3.12'
- django: '5.0'
- wagtail: '6.0'
- - python: '3.12'
- django: '5.0'
- wagtail: '6.1'
+ - python: '3.8'
+ django: '4.2'
+ wagtail: '6.2'
steps:
- uses: actions/checkout@v4
diff --git a/README.rst b/README.rst
index ffc5915..0c84ed3 100644
--- a/README.rst
+++ b/README.rst
@@ -18,17 +18,13 @@ Install the package using pip:
$ pip install wagtail-inventory
-This will also install `django-autocomplete-light `_.
-
-Add ``dal``, ``dal_select2``, and ``wagtailinventory`` as installed apps in your Django settings:
+Add `wagtailinventory`` as an installed app in your Django settings:
.. code-block:: python
# in settings.py
INSTALLED_APPS = (
...
- 'dal',
- 'dal_select2',
'wagtailinventory',
...
)
@@ -54,9 +50,9 @@ Compatibility
This code has been tested for compatibility with:
-* Python 3.8+
-* Django 3.2 (LTS), 4.2 (LTS), 5.0
-* Wagtail 3.0+, including 5.2 (LTS) and 6.0
+* Python 3.8, 3.12
+* Django 4.2 (LTS), 5.0
+* Wagtail 6.2
It should be compatible with all intermediate versions, as well.
If you find that it is not, please `file an issue `_.
diff --git a/pyproject.toml b/pyproject.toml
index d380eac..bb6d4da 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -14,18 +14,13 @@ authors = [
]
dependencies = [
"tqdm>=4.15.0,<5",
- "wagtail>=5.2",
- "django-autocomplete-light>=3.9",
+ "wagtail==6.2rc1",
]
classifiers = [
"Framework :: Django",
- "Framework :: Django :: 3.2",
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Wagtail",
- "Framework :: Wagtail :: 3",
- "Framework :: Wagtail :: 4",
- "Framework :: Wagtail :: 5",
"Framework :: Wagtail :: 6",
"License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
"License :: Public Domain",
diff --git a/tox.ini b/tox.ini
index 90f1b16..46971c7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -2,8 +2,8 @@
skipsdist=True
envlist=
lint,
- python3.8-django{4.2}-wagtail{5.2,6.0,6.1}
- python3.12-django{4.2,5.0}-wagtail{5.2,6.0,6.1}
+ python3.8-django{4.2}-wagtail{6.2}
+ python3.12-django{4.2,5.0}-wagtail{6.2}
coverage
[testenv]
@@ -18,9 +18,7 @@ basepython=
deps=
django4.2: Django>=4.2,<4.3
django5.0: Django>=5.0,<5.1
- wagtail5.2: wagtail>=5.2,<6.0
- wagtail6.0: wagtail>=6.0,<6.1
- wagtail6.1: wagtail>=6.1,<6.2
+ wagtail6.2: wagtail==6.2rc1
[testenv:lint]
basepython=python3.12
@@ -47,6 +45,7 @@ commands=
basepython=python3.12
deps=
Django>=5.0,<5.1
+ wagtail==6.2rc1
commands_pre=
python {toxinidir}/testmanage.py makemigrations
diff --git a/wagtailinventory/tests/settings.py b/wagtailinventory/tests/settings.py
index a2ffd9a..4e796ea 100644
--- a/wagtailinventory/tests/settings.py
+++ b/wagtailinventory/tests/settings.py
@@ -54,8 +54,6 @@
)
+ WAGTAIL_APPS
+ (
- "dal",
- "dal_select2",
"wagtailinventory",
"wagtailinventory.tests.testapp",
)
diff --git a/wagtailinventory/tests/test_views.py b/wagtailinventory/tests/test_views.py
index afc3739..ede80d3 100644
--- a/wagtailinventory/tests/test_views.py
+++ b/wagtailinventory/tests/test_views.py
@@ -1,6 +1,5 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
-from django.core.management import call_command
from django.test import TestCase
from django.urls import reverse
@@ -11,37 +10,6 @@
User = get_user_model()
-class BlockAutocompleteViewTestCase(WagtailTestUtils, TestCase):
- fixtures = ["test_blocks.json"]
-
- def setUp(self):
- self.login()
-
- def test_get_list(self):
- call_command("block_inventory", verbosity=0)
- response = self.client.get(
- reverse("wagtailinventory:block_autocomplete")
- )
-
- json_response = response.json()
- self.assertIn("results", json_response)
-
- results = json_response["results"]
-
- # There are six unique block types in our test fixture
- self.assertEqual(len(results), 6)
-
- # Make sure that one of the results matches our expected id/text
- # pairing
- self.assertIn(
- {
- "id": "wagtail.blocks.field_block.CharBlock",
- "text": "wagtail.blocks.field_block.CharBlock",
- },
- results,
- )
-
-
class BlockInventoryReportViewTestCase(WagtailTestUtils, TestCase):
fixtures = ["test_blocks.json"]
diff --git a/wagtailinventory/views.py b/wagtailinventory/views.py
index a407461..00d059e 100644
--- a/wagtailinventory/views.py
+++ b/wagtailinventory/views.py
@@ -1,53 +1,35 @@
-import wagtail
from wagtail.admin.auth import permission_denied
from wagtail.admin.filters import ContentTypeFilter, WagtailFilterSet
from wagtail.admin.views.reports import PageReportView
-from wagtail.models import Page
+from wagtail.models import Page, get_page_content_types
import django_filters
-from dal import autocomplete
from wagtailinventory.models import PageBlock
-if wagtail.VERSION >= (6,):
- from wagtail.models import get_page_content_types
-else: # pragma: no cover
- # For Wagtail < 6, use an older method to get the list of page types.
- from wagtail.admin.views.reports.aging_pages import (
- get_content_types_for_filter,
- )
-
- def get_page_content_types(include_base_page_type=True):
- return get_content_types_for_filter()
-
-
-class BlockAutocompleteView(autocomplete.Select2ListView):
- def get_list(self):
- return (
- PageBlock.objects.distinct()
- .order_by("block")
- .values_list("block", flat=True)
- )
+def get_block_choices():
+ return [
+ (page_block, page_block.rsplit(".", 1)[1])
+ for page_block in PageBlock.objects.distinct()
+ .order_by("block")
+ .values_list("block", flat=True)
+ ]
class BlockInventoryFilterSet(WagtailFilterSet):
- include_page_blocks = django_filters.AllValuesMultipleFilter(
+ include_page_blocks = django_filters.MultipleChoiceFilter(
field_name="page_blocks__block",
label="Include Blocks",
distinct=True,
- widget=autocomplete.Select2Multiple(
- url="wagtailinventory:block_autocomplete"
- ),
+ choices=get_block_choices,
)
- exclude_page_blocks = django_filters.AllValuesMultipleFilter(
+ exclude_page_blocks = django_filters.MultipleChoiceFilter(
field_name="page_blocks__block",
label="Exclude Blocks",
distinct=True,
exclude=True,
- widget=autocomplete.Select2Multiple(
- url="wagtailinventory:block_autocomplete"
- ),
+ choices=get_block_choices,
)
content_type = ContentTypeFilter(
label="Page Type",
@@ -60,9 +42,11 @@ class Meta:
class BlockInventoryReportView(PageReportView):
- title = "Block inventory"
+ page_title = "Block inventory"
header_icon = "placeholder"
filterset_class = BlockInventoryFilterSet
+ index_url_name = "wagtailinventory:block_inventory_report"
+ index_results_url_name = "wagtailinventory:block_inventory_report_results"
@classmethod
def check_permissions(cls, request):
diff --git a/wagtailinventory/wagtail_hooks.py b/wagtailinventory/wagtail_hooks.py
index d39f3c3..874bba9 100644
--- a/wagtailinventory/wagtail_hooks.py
+++ b/wagtailinventory/wagtail_hooks.py
@@ -9,10 +9,7 @@
delete_page_inventory,
update_page_inventory,
)
-from wagtailinventory.views import (
- BlockAutocompleteView,
- BlockInventoryReportView,
-)
+from wagtailinventory.views import BlockInventoryReportView
@hooks.register("after_create_page")
@@ -61,9 +58,9 @@ def register_inventory_report_url():
name="block_inventory_report",
),
path(
- "block-autocomplete/",
- BlockAutocompleteView.as_view(),
- name="block_autocomplete",
+ "results/",
+ BlockInventoryReportView.as_view(results_only=True),
+ name="block_inventory_report_results",
),
]