From 855591cf8fc24139adc7109e3c023c9c48f82554 Mon Sep 17 00:00:00 2001 From: Shohan Date: Thu, 29 Jul 2021 01:20:44 +0530 Subject: [PATCH] [feat] Add action dispatcher for images bulk actions --- wagtail/images/admin_urls.py | 4 +++- wagtail/images/views/bulk_actions/__init__.py | 3 ++- wagtail/images/views/bulk_actions/dispatcher.py | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 wagtail/images/views/bulk_actions/dispatcher.py diff --git a/wagtail/images/admin_urls.py b/wagtail/images/admin_urls.py index 11a7be9b71..c6726bc17e 100644 --- a/wagtail/images/admin_urls.py +++ b/wagtail/images/admin_urls.py @@ -1,6 +1,6 @@ from django.urls import path -from wagtail.images.views import chooser, images, multiple +from wagtail.images.views import bulk_actions, chooser, images, multiple app_name = 'wagtailimages' @@ -26,4 +26,6 @@ urlpatterns = [ path('chooser//', chooser.image_chosen, name='image_chosen'), path('chooser/upload/', chooser.chooser_upload, name='chooser_upload'), path('chooser//select_format/', chooser.chooser_select_format, name='chooser_select_format'), + + path('multiple//', bulk_actions.index, name='image_bulk_action'), ] diff --git a/wagtail/images/views/bulk_actions/__init__.py b/wagtail/images/views/bulk_actions/__init__.py index 9bf83f2862..441463081e 100644 --- a/wagtail/images/views/bulk_actions/__init__.py +++ b/wagtail/images/views/bulk_actions/__init__.py @@ -1,6 +1,7 @@ from .add_tags import add_tags from .add_to_collection import add_to_collection from .delete import delete +from .dispatcher import index -__all__ = ['add_tags', 'add_to_collection', 'delete'] +__all__ = ['add_tags', 'add_to_collection', 'delete', 'index'] diff --git a/wagtail/images/views/bulk_actions/dispatcher.py b/wagtail/images/views/bulk_actions/dispatcher.py new file mode 100644 index 0000000000..01066856ee --- /dev/null +++ b/wagtail/images/views/bulk_actions/dispatcher.py @@ -0,0 +1,14 @@ +from django.http.response import Http404 + +from wagtail.core import hooks + + +def index(request, action): + bulk_actions = hooks.get_hooks('register_image_bulk_action') + for action_func in bulk_actions: + _action = action_func(request) + if _action.action_type != action: + continue + return _action.dispatch(request) + + return Http404()