diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 26c02450e3..fd33d34947 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,6 +5,7 @@ Changelog ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Ensure that correct sidebar submenus open when labels use non-Latin alphabets (Matt Westcott) + * Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych) 2.16 (07.02.2022) diff --git a/docs/releases/2.16.1.rst b/docs/releases/2.16.1.rst index dbd53cab24..f81c7518fd 100644 --- a/docs/releases/2.16.1.rst +++ b/docs/releases/2.16.1.rst @@ -14,3 +14,4 @@ Bug fixes ~~~~~~~~~ * Ensure that correct sidebar submenus open when labels use non-Latin alphabets (Matt Westcott) + * Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych) diff --git a/wagtail/admin/tests/pages/test_bulk_actions/test_bulk_action.py b/wagtail/admin/tests/pages/test_bulk_actions/test_bulk_action.py new file mode 100644 index 0000000000..b2e33c1ca3 --- /dev/null +++ b/wagtail/admin/tests/pages/test_bulk_actions/test_bulk_action.py @@ -0,0 +1,16 @@ +from django.test import TestCase +from django.urls import reverse + +from wagtail.tests.utils import WagtailTestUtils + + +class TestBulkActionDispatcher(TestCase, WagtailTestUtils): + def setUp(self): + + # Login + self.user = self.login() + + def test_bulk_action_invalid_action(self): + url = reverse('wagtail_bulk_action', args=('wagtailcore', 'page', 'ships', )) + response = self.client.get(url) + self.assertEqual(response.status_code, 404) diff --git a/wagtail/admin/views/bulk_action/dispatcher.py b/wagtail/admin/views/bulk_action/dispatcher.py index de5fb64e32..718bc0af9d 100644 --- a/wagtail/admin/views/bulk_action/dispatcher.py +++ b/wagtail/admin/views/bulk_action/dispatcher.py @@ -1,5 +1,5 @@ from django.apps import apps -from django.http.response import Http404 +from django.http import Http404 from wagtail.admin.views.bulk_action.registry import bulk_action_registry as registry @@ -9,4 +9,4 @@ def index(request, app_label, model_name, action): action_class = registry.get_bulk_action_class(app_label, model_name, action) if action_class is not None: return action_class(request, model).dispatch(request) - return Http404() + raise Http404