Move CreateView hook calls into a helper method

pull/6331/head
Matt Westcott 2020-08-07 00:37:23 +01:00 zatwierdzone przez Matt Westcott
rodzic 893c49c4a3
commit a011a5eb73
1 zmienionych plików z 22 dodań i 16 usunięć

Wyświetl plik

@ -45,6 +45,16 @@ def add_subpage(request, parent_page_id):
class CreateView(TemplateResponseMixin, ContextMixin, View): class CreateView(TemplateResponseMixin, ContextMixin, View):
template_name = 'wagtailadmin/pages/create.html' template_name = 'wagtailadmin/pages/create.html'
def run_hook(self, hook_name, *args, **kwargs):
"""
Run the named hook, passing args and kwargs to each function registered under that hook name.
If any return an HttpResponse, stop processing and return that response
"""
for fn in hooks.get_hooks(hook_name):
result = fn(*args, **kwargs)
if hasattr(result, 'status_code'):
return result
def dispatch(self, request, content_type_app_name, content_type_model_name, parent_page_id): def dispatch(self, request, content_type_app_name, content_type_model_name, parent_page_id):
self.parent_page = get_object_or_404(Page, id=parent_page_id).specific self.parent_page = get_object_or_404(Page, id=parent_page_id).specific
self.parent_page_perms = self.parent_page.permissions_for_user(self.request.user) self.parent_page_perms = self.parent_page.permissions_for_user(self.request.user)
@ -70,10 +80,9 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
if not self.page_class.can_create_at(self.parent_page): if not self.page_class.can_create_at(self.parent_page):
raise PermissionDenied raise PermissionDenied
for fn in hooks.get_hooks('before_create_page'): response = self.run_hook('before_create_page', self.request, self.parent_page, self.page_class)
result = fn(self.request, self.parent_page, self.page_class) if response:
if hasattr(result, 'status_code'): return response
return result
self.page = self.page_class(owner=self.request.user) self.page = self.page_class(owner=self.request.user)
self.edit_handler = self.page_class.get_edit_handler() self.edit_handler = self.page_class.get_edit_handler()
@ -111,17 +120,15 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
# Publish # Publish
if is_publishing: if is_publishing:
for fn in hooks.get_hooks('before_publish_page'): response = self.run_hook('before_publish_page', self.request, self.page)
result = fn(self.request, self.page) if response:
if hasattr(result, 'status_code'): return response
return result
revision.publish(user=self.request.user) revision.publish(user=self.request.user)
for fn in hooks.get_hooks('after_publish_page'): response = self.run_hook('after_publish_page', self.request, self.page)
result = fn(self.request, self.page) if response:
if hasattr(result, 'status_code'): return response
return result
# Submit # Submit
if is_submitting: if is_submitting:
@ -175,10 +182,9 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
else: else:
messages.success(self.request, _("Page '{0}' created.").format(self.page.get_admin_display_title())) messages.success(self.request, _("Page '{0}' created.").format(self.page.get_admin_display_title()))
for fn in hooks.get_hooks('after_create_page'): response = self.run_hook('after_create_page', self.request, self.page)
result = fn(self.request, self.page) if response:
if hasattr(result, 'status_code'): return response
return result
if is_publishing or is_submitting: if is_publishing or is_submitting:
# we're done here # we're done here