예제 #1
0
    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])
예제 #2
0
    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])
예제 #3
0
    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])
예제 #4
0
    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
예제 #5
0
 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"))
예제 #6
0
    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
예제 #7
0
 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())
예제 #8
0
 def get_choices_default(self):
     return [(fn.__name__, capfirst(fn.__name__.replace("_", " ")))
             for fn in hooks.get_hooks("process_form_submission")]
예제 #9
0
 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
예제 #10
0
 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
예제 #11
0
 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
예제 #12
0
 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)
예제 #13
0
 def test_builtins_can_be_disabled(self):
     hook_fns = hooks.get_hooks("process_form_submission")
     self.assertEqual(hook_fns, [])
예제 #14
0
 def test_default_hooks(self):
     hook_fns = hooks.get_hooks("process_form_submission")
     self.assertEqual(hook_fns, [save_form_submission_data])
예제 #15
0
    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)
예제 #16
0
 def get_choices_default(self):
     return [(fn.__name__, capfirst(fn.__name__.replace('_', ' ')))
             for fn in hooks.get_hooks('process_form_submission')]