예제 #1
0
def test_formset_layout(settings):
    SampleFormSet = formset_factory(SampleForm, extra=3)
    formset = SampleFormSet()
    helper = FormHelper()
    helper.form_id = 'thisFormsetRocks'
    helper.form_class = 'formsets-that-rock'
    helper.form_method = 'POST'
    helper.form_action = 'simpleAction'
    helper.layout = Layout(
        Fieldset(
            "Item {{ forloop.counter }}",
            'is_company',
            'email',
        ), HTML("{% if forloop.first %}Note for first form only{% endif %}"),
        Row('password1', 'password2'), Fieldset("", 'first_name', 'last_name'))

    html = render_crispy_form(form=formset,
                              helper=helper,
                              context={'csrf_token': _get_new_csrf_key()})

    # Check formset fields
    assert contains_partial(
        html,
        '<input id="id_form-TOTAL_FORMS" name="form-TOTAL_FORMS" type="hidden" value="3"/>'
    )
    assert contains_partial(
        html,
        '<input id="id_form-INITIAL_FORMS" name="form-INITIAL_FORMS" type="hidden" value="0"/>'
    )
    assert contains_partial(
        html,
        '<input id="id_form-MAX_NUM_FORMS" name="form-MAX_NUM_FORMS" type="hidden" value="1000"/>'
    )
    assert contains_partial(
        html,
        '<input id="id_form-MIN_NUM_FORMS" name="form-MIN_NUM_FORMS" type="hidden" value="0"/>'
    )
    assert html.count("hidden") == 5

    # Check form structure
    assert html.count('<form') == 1
    assert html.count("<input type='hidden' name='csrfmiddlewaretoken'") == 1
    assert 'formsets-that-rock' in html
    assert 'method="post"' in html
    assert 'id="thisFormsetRocks"' in html
    assert 'action="%s"' % reverse('simpleAction') in html

    # Check form layout
    assert 'Item 1' in html
    assert 'Item 2' in html
    assert 'Item 3' in html
    assert html.count('Note for first form only') == 1
    if settings.CRISPY_TEMPLATE_PACK == 'uni_form':
        assert html.count('formRow') == 3
    elif settings.CRISPY_TEMPLATE_PACK in ('bootstrap3', 'bootstrap4'):
        assert html.count('row') == 3

    if settings.CRISPY_TEMPLATE_PACK == 'bootstrap4':
        assert html.count('form-group') == 18
예제 #2
0
    def helper(self):
        helper = FormHelper()
        helper.attrs = {'action': '/contactlist/api/event/'}
        helper.form_id = "event-form"
        helper.form_class = 'form-horizontal'
        helper.form_action = '{ submit }'

        return helper
예제 #3
0
def get_helper():
    helper = FormHelper()
    helper.form_class = 'form-horizontal'
    helper.form_method = 'post'
    helper.form_action = 'submit_survey'
    helper.label_class = 'col-lg-2'
    helper.field_class = 'col-lg-8'
    return helper
예제 #4
0
    def __init__(self, request, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.request = request

        h = FormHelper()
        h.form_method = 'POST'
        h.form_action = reverse('twilio_submit')
        h.add_input(Submit('submit', _('Send')))
        self.helper = h
예제 #5
0
 def helper(self):
     form = CreateClientForm()
     helper = FormHelper()
     reset = Reset('', 'Reset')
     helper.add_input(reset)
     submit = Submit('', 'Create Client')
     helper.add_input(submit)
     helper.form_action = '/account/clients'
     helper.form_method = 'POST'
     return helper
예제 #6
0
 def helper(self):
     form = SignupForm()
     helper = FormHelper()
     reset = Reset('', 'Reset')
     helper.add_input(reset)
     submit = Submit('', 'Sign Up')
     helper.add_input(submit)
     helper.form_action = '/account/signup'
     helper.form_method = 'POST'
     return helper
예제 #7
0
    def __init__(self, *args, **kwargs):
        super(CrispyRegistrationForm, self).__init__(*args, **kwargs)

        helper = FormHelper()
        helper.form_class = 'form-horizontal form_without_actions_decoration'
        helper.form_method = 'post'
        helper.form_action = '.'
        helper.add_input(Submit('submit', u'¡Registrarse!'))

        self.helper = helper
예제 #8
0
 def get_formhelper(self):
     helper = FormHelper()
     helper.form_action = '#'
     helper.form_id = 'cradmin_legacy_resetpassword_reset_form'
     helper.layout = layout.Layout(
         layout.Field('password1', focusonme='focusonme', css_class='input-lg'),
         layout.Field('password2', css_class='input-lg'),
         PrimarySubmitLg('submit', gettext_lazy('Reset password'))
     )
     return helper
예제 #9
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        helper = FormHelper()
        helper.form_method = 'POST'
        helper.form_action = 'update/'
        helper.form_class = 'dj-ajax-form'
        helper.add_input(Button('reset', _('Reset'), css_class='btn btn-warning'))
        helper.add_input(Submit('update', _('Update')))
        self.helper = helper
예제 #10
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     helper = FormHelper()
     helper.form_class = "form-horizontal"
     helper.form_action = reverse("accounts:auth_password_reset")
     helper.label_class = "col-sm-3"
     helper.field_class = "col-sm-9"
     helper.add_input(Submit('submit', 'Reset'))
     context['form_helper'] = helper
     return context
    def __init__(self, *args, **kwargs):
        super(CrispyPasswordResetForm, self).__init__(*args, **kwargs)

        helper = FormHelper()
        helper.form_class = 'form-horizontal form_without_actions_decoration'
        helper.form_method = 'post'
        helper.form_action = '.'
        helper.add_input(Submit('submit', u'Crear nueva contraseña'))

        self.helper = helper
예제 #12
0
 def helper(self):
     form = LoginForm()
     helper = FormHelper()
     reset = Reset('', 'Reset')
     helper.add_input(reset)
     submit = Submit('', 'Log In')
     helper.add_input(submit)
     helper.form_action = '/account/login'
     helper.form_method = 'POST'
     return helper
예제 #13
0
def test_formset_layout(settings):
    TestFormSet = formset_factory(TestForm, extra=3)
    formset = TestFormSet()
    helper = FormHelper()
    helper.form_id = 'thisFormsetRocks'
    helper.form_class = 'formsets-that-rock'
    helper.form_method = 'POST'
    helper.form_action = 'simpleAction'
    helper.layout = Layout(
        Fieldset(
            "Item {{ forloop.counter }}",
            'is_company',
            'email',
        ), HTML("{% if forloop.first %}Note for first form only{% endif %}"),
        Row('password1', 'password2'), Fieldset("", 'first_name', 'last_name'))

    html = render_crispy_form(form=formset,
                              helper=helper,
                              context={'csrf_token': _get_new_csrf_key()})

    # Check formset fields
    hidden_count = 4  # before Django 1.7 added MIN_NUM_FORM_COUNT
    assert html.count(
        'id="id_form-TOTAL_FORMS" name="form-TOTAL_FORMS" type="hidden" value="3"'
    ) == 1
    assert html.count(
        'id="id_form-INITIAL_FORMS" name="form-INITIAL_FORMS" type="hidden" value="0"'
    ) == 1
    assert html.count(
        'id="id_form-MAX_NUM_FORMS" name="form-MAX_NUM_FORMS" type="hidden" value="1000"'
    ) == 1
    if hasattr(forms.formsets, 'MIN_NUM_FORM_COUNT'):
        assert html.count(
            'id="id_form-MIN_NUM_FORMS" name="form-MIN_NUM_FORMS" type="hidden" value="0"'
        ) == 1
        hidden_count += 1
    assert html.count("hidden") == hidden_count

    # Check form structure
    assert html.count('<form') == 1
    assert html.count("<input type='hidden' name='csrfmiddlewaretoken'") == 1
    assert 'formsets-that-rock' in html
    assert 'method="post"' in html
    assert 'id="thisFormsetRocks"' in html
    assert 'action="%s"' % reverse('simpleAction') in html

    # Check form layout
    assert 'Item 1' in html
    assert 'Item 2' in html
    assert 'Item 3' in html
    assert html.count('Note for first form only') == 1
    if settings.CRISPY_TEMPLATE_PACK == 'uni_form':
        assert html.count('formRow') == 3
    else:
        assert html.count('row') == 3
예제 #14
0
    def test_formset_layout(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy testFormSet formset_helper %}
        """)

        form_helper = FormHelper()
        form_helper.form_id = 'thisFormsetRocks'
        form_helper.form_class = 'formsets-that-rock'
        form_helper.form_method = 'POST'
        form_helper.form_action = 'simpleAction'
        form_helper.add_layout(
            Layout(
                Fieldset("Item {{ forloop.counter }}",
                    'is_company',
                    'email',
                ),
                HTML("{% if forloop.first %}Note for first form only{% endif %}"),
                Row('password1', 'password2'),
                Fieldset("",
                    'first_name',
                    'last_name'
                )
            )
        )

        TestFormSet = formset_factory(TestForm, extra = 3)
        testFormSet = TestFormSet()

        c = Context({
            'testFormSet': testFormSet,
            'formset_helper': form_helper,
            'csrf_token': _get_new_csrf_key()
        })
        html = template.render(c)

        # Check form parameters
        self.assertEqual(html.count('<form'), 1)
        self.assertEqual(html.count("<input type='hidden' name='csrfmiddlewaretoken'"), 1)

        self.assertTrue('formsets-that-rock' in html)
        self.assertTrue('method="post"' in html)
        self.assertTrue('id="thisFormsetRocks"' in html)
        self.assertTrue('action="%s"' % reverse('simpleAction') in html)

        # Check form layout
        self.assertTrue('Item 1' in html)
        self.assertTrue('Item 2' in html)
        self.assertTrue('Item 3' in html)
        self.assertEqual(html.count('Note for first form only'), 1)

        if settings.CRISPY_TEMPLATE_PACK == 'uni_form':
            self.assertEqual(html.count('formRow'), 3)
        else:
            self.assertEqual(html.count('row'), 3)
예제 #15
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     helper = FormHelper()
     helper.form_class = "form-horizontal"
     helper.form_action = reverse("accounts:auth_login")
     helper.label_class = "col-sm-3"
     helper.field_class = "col-sm-9"
     helper.add_input(Submit('submit', 'Login'))
     helper.add_input(Hidden('next', context['next']))
     context['form_helper'] = helper
     return context
예제 #16
0
def test_formset_layout(settings):
    SampleFormSet = formset_factory(SampleForm, extra=3)
    formset = SampleFormSet()
    helper = FormHelper()
    helper.form_id = "thisFormsetRocks"
    helper.form_class = "formsets-that-rock"
    helper.form_method = "POST"
    helper.form_action = "simpleAction"
    helper.layout = Layout(
        Fieldset(
            "Item {{ forloop.counter }}",
            "is_company",
            "email",
        ),
        HTML("{% if forloop.first %}Note for first form only{% endif %}"),
        Row("password1", "password2"),
        Fieldset("", "first_name", "last_name"),
    )

    html = render_crispy_form(form=formset, helper=helper, context={"csrf_token": _get_new_csrf_string()})

    # Check formset fields
    assert contains_partial(html, '<input id="id_form-TOTAL_FORMS" name="form-TOTAL_FORMS" type="hidden" value="3"/>')
    assert contains_partial(
        html, '<input id="id_form-INITIAL_FORMS" name="form-INITIAL_FORMS" type="hidden" value="0"/>'
    )
    assert contains_partial(
        html, '<input id="id_form-MAX_NUM_FORMS" name="form-MAX_NUM_FORMS" type="hidden" value="1000"/>'
    )
    assert contains_partial(
        html, '<input id="id_form-MIN_NUM_FORMS" name="form-MIN_NUM_FORMS" type="hidden" value="0"/>'
    )
    assert html.count("hidden") == 5

    # Check form structure
    assert html.count("<form") == 1
    assert html.count("csrfmiddlewaretoken") == 1
    assert "formsets-that-rock" in html
    assert 'method="post"' in html
    assert 'id="thisFormsetRocks"' in html
    assert 'action="%s"' % reverse("simpleAction") in html

    # Check form layout
    assert "Item 1" in html
    assert "Item 2" in html
    assert "Item 3" in html
    assert html.count("Note for first form only") == 1
    if settings.CRISPY_TEMPLATE_PACK == "uni_form":
        assert html.count("formRow") == 3
    elif settings.CRISPY_TEMPLATE_PACK in ("bootstrap3", "bootstrap4"):
        assert html.count("row") == 3

    if settings.CRISPY_TEMPLATE_PACK == "bootstrap4":
        assert html.count("form-group") == 18
예제 #17
0
def MPESAFormHelper():
    """the MPESA form with action to payment page"""
    helper = FormHelper()
    helper.form_id = 'id-mpesa-form'
    helper.form_action = reverse('customer:pay')
    helper.form_method = 'post'
    helper.layout = Layout(
        Field('receipt'),
        FormActions(Submit('submit', _('Submit'), css_class='btn-success')))

    return helper
예제 #18
0
    def helper(self):
        helper = FormHelper()
        helper.form_id = 'form-sync'
        helper.form_action = reverse('trekking:sync_randos')
        helper.form_class = 'search'
        # submit button with boostrap attributes, disabled by default
        helper.add_input(Submit('sync-web', _("Launch Sync"),
                                **{'data-toggle': "modal",
                                   'data-target': "#confirm-submit",
                                   'disabled': 'disabled'}))

        return helper
예제 #19
0
 def get_formhelper(self):
     helper = FormHelper()
     helper.form_action = '#'
     helper.form_id = 'cradmin_legacy_resetpassword_begin_form'
     helper.form_show_labels = False
     helper.layout = layout.Layout(
         layout.Field('email',
                      css_class='input-lg',
                      placeholder=gettext_lazy('Email'),
                      focusonme='focusonme'),
         PrimarySubmitLg('submit', gettext_lazy('Search')))
     return helper
예제 #20
0
def get_formhelper(form_action, placeholder='Search'):
    """Create a default form layout for a search form"""
    helper = FormHelper()
    helper.form_action = form_action
    helper.form_method = 'GET'
    helper.form_class = 'search-form'
    helper.layout = Layout(
        Row(Column(Field('query', placeholder=placeholder),
                   css_class='medium-9'),
            Column(Submit('submit', 'Search', css_class='postfix'),
                   css_class='medium-3'),
            css_class='collapse'))
    return helper
예제 #21
0
    def get_form_helper(self):
        """
        Defines and returns the ``django_crispy_forms`` layout. Override this if you want to alter the form-layout.
        """
        formhelper = FormHelper()
        formhelper.form_action = self.request.get_full_path()
        formhelper.form_id = 'cradmin_authenticate_login_form'
        formhelper.label_class = 'sr-only'

        layoutargs = self.get_field_layout() + [
            PrimarySubmitLg('login', gettext_lazy('Sign in'))
        ]
        formhelper.layout = layout.Layout(*layoutargs)
        return formhelper
예제 #22
0
def test_template_context_using_form_attrs():
    helper = FormHelper()
    helper.form_id = "test-form"
    helper.form_class = "test-forms"
    helper.form_action = "submit/test/form"
    node = CrispyFormNode("form", "helper")
    context = node.get_response_dict(helper, {}, False)

    assert context["form_id"] == "test-form"
    assert context["form_attrs"]["id"] == "test-form"
    assert "test-forms" in context["form_class"]
    assert "test-forms" in context["form_attrs"]["class"]
    assert context["form_action"] == "submit/test/form"
    assert context["form_attrs"]["action"] == "submit/test/form"
예제 #23
0
    def test_template_context_using_form_attrs(self):
        helper = FormHelper()
        helper.form_id = 'test-form'
        helper.form_class = 'test-forms'
        helper.form_action = 'submit/test/form'
        node = CrispyFormNode('form', 'helper')
        context = node.get_response_dict(helper, {}, False)

        self.assertEqual(context['form_id'], "test-form")
        self.assertEqual(context['form_attrs']['id'], "test-form")
        self.assertEqual(context['form_class'], "test-forms")
        self.assertEqual(context['form_attrs']['class'], "test-forms")
        self.assertEqual(context['form_action'], "submit/test/form")
        self.assertEqual(context['form_attrs']['action'], "submit/test/form")
예제 #24
0
def test_template_context_using_form_attrs():
    helper = FormHelper()
    helper.form_id = 'test-form'
    helper.form_class = 'test-forms'
    helper.form_action = 'submit/test/form'
    node = CrispyFormNode('form', 'helper')
    context = node.get_response_dict(helper, {}, False)

    assert context['form_id'] == "test-form"
    assert context['form_attrs']['id'] == "test-form"
    assert "test-forms" in context['form_class']
    assert "test-forms" in context['form_attrs']['class']
    assert context['form_action'] == "submit/test/form"
    assert context['form_attrs']['action'] == "submit/test/form"
예제 #25
0
def BaseFormHelper(url_name = None, submit_name = 'submit', submit_css = '', back = '', back_name = 'back', back_css = 'btn_danger'):
	"""
		The default actions already implemented, but not overriding __init__ so that you
		can add more actions (actually a generator, not a class).
	"""
	helper = FormHelper()
	if url_name:
		helper.form_action = reverse(url_name)
	if back:
		#todo: this should work without javascript
		helper.add_input(Button('', back_name, onclick = 'location.href=\'%s\'' % reverse(back), css_class = back_css, tabindex = -1))
	""" It is not advisable to use 'submit' or 'post' as input names, because jquery gets confused. """
	if submit_name:
		helper.add_input(Submit('', submit_name, css_class = submit_css))
	return helper
예제 #26
0
    def helper(self):
        helper = FormHelper(self)

        helper.form_action = reverse('vid:search')
        helper.form_method = 'GET'
        helper.form_show_errors = True
        helper.render_unmentioned_fields = True

        helper.layout = Layout(
            Field('query', css_class='col-sm-6'),
            ButtonHolder(
                Submit('submit',
                       _('Search'),
                       css_class='btn btn-success btn-lg'), ))
        return helper
예제 #27
0
 def get_form_class(self):
     form = super().get_form_class()
     if not hasattr(form, "fields"):
         setattr(form, "fields", form.declared_fields)
     helper = FormHelper(form)
     helper.form_method = "get"
     helper.form_action = "."
     helper.html5_required = True
     helper.layout = Layout(
         *form.fields.keys(),
         FormActions(
             StrictButton(_("Apply"),
                          type="submit",
                          css_class="btn btn-primary btn-block"), ))
     form.helper = helper
     return form
예제 #28
0
    def __init__(self, request, *args, **kwargs):
        super().__init__(*args, request=request, **kwargs)

        helper = FormHelper()
        helper.form_method = 'POST'
        helper.form_action = 'create/'
        helper.form_id = self.FORM_ID_PREFIX + 'create'
        helper.form_class = self.FORM_CSS_CLASS
        helper.add_input(
            Button('ajax-reset',
                   _('Reset'),
                   css_class='btn btn-warning ajax-reset'))
        helper.add_input(Submit('submit', _('Create')))

        self.helper = helper
        self.setup_flow_layout()
예제 #29
0
    def helper(self):
        helper = FormHelper()
        helper.add_input(Submit(name='simpan_btn', value='Simpan'))
        helper.form_action = reverse_lazy('lhkPribadiApp:ubahDataKeluargaUrl', kwargs={'pk': self.instance.id})
        helper.layout = Layout(
            'nama_lengkap',
            'nik',
            'hubungan',
            'tempat_lahir',
            Field('tanggal_lahir', css_class='dateinput form-control flatpickr-input'),
            'jenis_kelamin',
            'pekerjaan',
            'nomor_telepon',
            'alamat',
        )

        return helper
예제 #30
0
def RegistrationFormHelper():
    """
    Helper for the user registration form
    """
    helper = FormHelper()
    helper.form_action = '.'
    helper.layout = Layout(
        Row(Column('email', 'username', css_class='twelve'), ),
        Row(
            Column('password1', css_class='six'),
            Column('password2', css_class='six'),
        ), Row(Column('captcha', css_class='twelve'), ),
        Row(
            Column(ButtonHolder(Submit('submit', _('Submit')),
                                css_class="text-right"),
                   css_class='twelve'), ))

    return helper