def test_after_hook(self): def after_hook(): pass with self.register_hook("test_hook_name", after_hook, order=1): hook_fns = hooks.get_hooks("test_hook_name") self.assertEqual(hook_fns, [test_hook, after_hook])
def test_setting_only_removes_builtins(self): def custom_hook(): pass with self.register_hook("process_form_submission", custom_hook, order=1): hook_fns = hooks.get_hooks("process_form_submission") self.assertEqual(hook_fns, [custom_hook])
def test_before_hook(self): def before_hook(): pass with self.register_hook("test_hook_name", before_hook, order=-1): hook_fns = hooks.get_hooks("test_hook_name") self.assertEqual(hook_fns, [before_hook, test_hook])
def get_form_fields(self): """ Returns the form fields stream_data. """ form_fields = self.fields.stream_data for fn in hooks.get_hooks("construct_submission_form_fields"): form_fields = fn(form_fields) return form_fields
def get_object(self, queryset=None): pk = self.kwargs.get(self.pk_url_kwarg) try: qs = self.model.objects.all() for fn in hooks.get_hooks("construct_form_queryset"): qs = fn(qs, self.request) return qs.get(pk=pk) except self.model.DoesNotExist: raise Http404(_("No Form found matching the query"))
def get_form_fields(self): """Returns the form field's stream data.""" if WAGTAIL_VERSION >= (2, 12): form_fields = self.fields.raw_data else: form_fields = self.fields.stream_data for fn in hooks.get_hooks("construct_submission_form_fields"): form_fields = fn(form_fields) return form_fields
def form_valid(self, form): instance = form.save(commit=False) for fn in form_hooks.get_hooks("before_form_save"): instance = fn(instance, self.request) instance.save() wagtail_messages.success( self.request, self.get_success_message(instance), buttons=self.get_success_message_buttons(instance), ) return redirect(self.get_success_url())
def get_choices_default(self): return [(fn.__name__, capfirst(fn.__name__.replace("_", " "))) for fn in hooks.get_hooks("process_form_submission")]
def get_list_filter(self, request): list_filter = self.list_filter for fn in form_hooks.get_hooks("construct_form_list_filter"): list_filter = fn(list_filter, request) return list_filter
def get_list_display(self, request): list_display = self.list_display for fn in form_hooks.get_hooks("construct_form_list_display"): list_display = fn(list_display, request) return list_display
def get_queryset(self, request): qs = super().get_queryset(request) for fn in form_hooks.get_hooks("construct_form_queryset"): qs = fn(qs, request) return qs
def dispatch(self, request, *args, **kwargs): for fn in form_hooks.get_hooks( "before_inspect_form_instance_dispatch"): self.instance = fn(self.instance, request) return super().dispatch(request, *args, **kwargs)
def test_builtins_can_be_disabled(self): hook_fns = hooks.get_hooks("process_form_submission") self.assertEqual(hook_fns, [])
def test_default_hooks(self): hook_fns = hooks.get_hooks("process_form_submission") self.assertEqual(hook_fns, [save_form_submission_data])
def process_form_submission(self, form): """ Runs each hook if selected in the form. """ for fn in hooks.get_hooks('process_form_submission'): if fn.__name__ in self.process_form_submission_hooks: fn(self, form)
def get_choices_default(self): return [(fn.__name__, capfirst(fn.__name__.replace('_', ' '))) for fn in hooks.get_hooks('process_form_submission')]