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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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"
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")
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"
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
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
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
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()
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
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