Exemple #1
0
    def copy(self):
        """ Copy this form and its fields. """

        form_copy = Form(
            title=self.title,
            slug=uuid.uuid4(),
            template_name=self.template_name,
            fields=self.fields,
            submit_button_text=self.submit_button_text,
            success_message=self.success_message,
            error_message=self.error_message,
            post_redirect_page=self.post_redirect_page,
            process_form_submission_hooks=self.process_form_submission_hooks
        )
        form_copy.save()

        # additionally copy the advanced settings if they exist
        SettingsModel = get_advanced_settings_model()

        if SettingsModel:
            try:
                advanced = SettingsModel.objects.get(form=self)
                advanced.pk = None
                advanced.form = form_copy
                advanced.save()
            except SettingsModel.DoesNotExist:
                pass

        return form_copy
Exemple #2
0
    def test_copy_copies_advanced_settings(self):
        from wagtailstreamforms.utils.loading import get_advanced_settings_model
        SettingsModel = get_advanced_settings_model()

        SettingsModel.objects.create(form=self.test_form, name='foo', number=1)

        copied = self.test_form.copy()

        SettingsModel.objects.get(form=copied, name='foo', number=1)
from django import forms
from django.contrib import messages
from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext as _
from django.views.generic import UpdateView
from wagtailstreamforms.models import Form
from wagtailstreamforms.utils.loading import get_advanced_settings_model
from wagtailstreamforms.wagtail_hooks import FormURLHelper

SettingsModel = get_advanced_settings_model()


class AdvancedSettingsForm(forms.ModelForm):
    class Meta:
        exclude = ("form", )
        model = SettingsModel


class AdvancedSettingsView(UpdateView):
    form_class = AdvancedSettingsForm
    model = SettingsModel
    template_name = "streamforms/advanced_settings.html"
    success_message = _("Form '%s' advanced settings updated.")

    @property
    def url_helper(self):
        return FormURLHelper(model=Form)

    def get_object(self, queryset=None):
        form_pk = self.kwargs.get("pk")
        form = get_object_or_404(Form, pk=form_pk)
Exemple #4
0
 def test_valid_model_returns_class(self):
     self.assertIs(get_advanced_settings_model(), ValidFormSettingsModel)
Exemple #5
0
 def test_invalid_model_inheritance(self):
     msg = "must inherit from 'wagtailstreamforms.models.AbstractFormSetting'"
     with self.assertRaisesMessage(ImproperlyConfigured, msg):
         get_advanced_settings_model()
Exemple #6
0
 def test_invalid_import(self):
     msg = "refers to model 'foo.Bar' that has not been installed"
     with self.assertRaisesMessage(ImproperlyConfigured, msg):
         get_advanced_settings_model()
Exemple #7
0
 def test_invalid_string(self):
     msg = "must be of the form 'app_label.model_name'"
     with self.assertRaisesMessage(ImproperlyConfigured, msg):
         get_advanced_settings_model()
Exemple #8
0
 def test_default_none(self):
     self.assertIsNone(get_advanced_settings_model())