def test_second_layout_multifield_column(self): form_helper = FormHelper() form_helper.add_layout( Layout( MultiField( 'is_company', 'email', 'password1', 'password2', css_id = "multifield_info", ), Column( 'first_name', 'last_name', css_id = "column_name", ) ) ) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) html = template.render(c) self.assertTrue('multiField' in html) self.assertTrue('formColumn' in html) self.assertTrue('id="multifield_info"' in html) self.assertTrue('id="column_name"' in html)
def setUp(self): self.style = '<style>.formRow{color:red;}</style>' layout = Layout( # first fieldset shows the company Fieldset('', 'is_company'), # second fieldset shows the contact info Fieldset( 'Contact details', 'email', Row('password1', 'password2'), 'first_name', 'last_name', )) form_helper = FormHelper() form_helper.add_layout(layout) self.c = Context({ 'formset': TestFormset(), 'formset_helper': form_helper }) template = get_template_from_string(""" {% load uni_form_tags %} {% uni_form_set formset formset_helper %} """) self.html = template.render(self.c)
def test_change_layout_dynamically_delete_field(self): template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) form = TestForm() form_helper = FormHelper() form_helper.add_layout( Layout( Fieldset( u'Company Data', 'is_company', 'email', 'password1', 'password2', css_id="multifield_info", ), Column( 'first_name', 'last_name', css_id="column_name", ))) # We remove email field on the go # Layout needs to be adapted for the new form fields del form.fields['email'] del form_helper.layout.fields[0].fields[1] c = Context({'form': form, 'form_helper': form_helper}) html = template.render(c) self.assertFalse('email' in html)
def setUp(self): self.style = '<style>.formRow{color:red;}</style>' layout = Layout( # first fieldset shows the company Fieldset('', 'is_company'), # second fieldset shows the contact info Fieldset('Contact details', 'email', Row('password1','password2'), 'first_name', 'last_name', ) ) form_helper = FormHelper() form_helper.add_layout(layout) self.c = Context({'formset': TestFormset(), 'formset_helper': form_helper}) template = get_template_from_string(""" {% load uni_form_tags %} {% uni_form_set formset formset_helper %} """) self.html = template.render(self.c)
def test_second_layout_multifield_column_buttonholder_submit(self): form_helper = FormHelper() form_helper.add_layout( Layout( MultiField( "Some company data", "is_company", "email", "password1", "password2", css_id="multifield_info" ), Column("first_name", "last_name", css_id="column_name"), ButtonHolder(Submit("Save", "Save", css_class="button white")), ) ) template = get_template_from_string( u""" {% load uni_form_tags %} {% uni_form form form_helper %} """ ) c = Context({"form": TestForm(), "form_helper": form_helper}) html = template.render(c) self.assertTrue("multiField" in html) self.assertTrue("formColumn" in html) self.assertTrue('id="multifield_info"' in html) self.assertTrue('id="column_name"' in html) self.assertTrue('div class="buttonHolder">' in html) self.assertTrue('input type="submit"' in html) self.assertTrue('name="save"' in html)
def helper(self): helper = FormHelper() style = """ <style> .uniForm label, .uniForm .label { display: inline; } </style> """ layout = Layout( Fieldset('', 'email', 'first_name', 'last_name', 'url', 'phone', 'work_address', 'city', 'country', HTML(style), 'image', ) ) helper.add_layout(layout) submit = Submit('submit','Update') helper.add_input(submit) helper.form_method = 'POST' return helper
def advanced_search(request, reset=False): marketplace = request.marketplace if reset: form = AdvancedSearchForm(marketplace=marketplace) else: form = AdvancedSearchForm(marketplace=marketplace, data=request.GET) if request.GET.get("do"): result_list = [] if form.is_valid(): result_list = form.search() pager = Paginator(result_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE) try: page = int(request.GET.get("page", "1")) except: page = 1 try: paginator = pager.page(page) except (EmptyPage, InvalidPage): raise Http404 paged = (pager.num_pages > 1) return render_to_response( "%s/buy/advanced_search_results.html" % marketplace.template_prefix, { "result_list": paginator, "form": form, "pages": pager.page_range, "paged": paged, "total": pager.count, "view_mode": form.cleaned_data["view_by"] }, RequestContext(request)) form_helper = FormHelper() layout = Layout( Fieldset("", "q"), Fieldset("", Row("categories", "subcategories")), Fieldset("", "include"), Fieldset("", Row("from_price", "to_price")), Fieldset("", "sort"), Fieldset("", "view_by"), ) form_helper.add_layout(layout) submit = Submit("do", _("Search")) submit.field_classes = "button_primary" form_helper.add_input(submit) return render_to_response( "%s/buy/advanced_search.html" % marketplace.template_prefix, { "form": form, "helper": form_helper }, RequestContext(request))
def test_change_layout_dynamically_delete_field(self): template = get_template_from_string( u""" {% load uni_form_tags %} {% uni_form form form_helper %} """ ) form = TestForm() form_helper = FormHelper() form_helper.add_layout( Layout( Fieldset(u"Company Data", "is_company", "email", "password1", "password2", css_id="multifield_info"), Column("first_name", "last_name", css_id="column_name"), ) ) # We remove email field on the go # Layout needs to be adapted for the new form fields del form.fields["email"] del form_helper.layout.fields[0].fields[1] c = Context({"form": form, "form_helper": form_helper}) html = template.render(c) self.assertFalse("email" in html)
def test_change_layout_dynamically_delete_field(self): template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) form = TestForm() form_helper = FormHelper() form_helper.add_layout( Layout( Fieldset( u'Company Data', 'is_company', 'email', 'password1', 'password2', css_id = "multifield_info", ), Column( 'first_name', 'last_name', css_id = "column_name", ) ) ) # We remove email field on the go # Layout needs to be adapted for the new form fields del form.fields['email'] del form_helper.layout.fields[0].fields[1] c = Context({'form': form, 'form_helper': form_helper}) html = template.render(c) self.assertFalse('email' in html)
def render (self, request, dct): ## Preconditions & preparation: results = msgs = None cls = self.__class__ ## Main: # instantiate form in one of several ways ... form_cls = cls.ToolForm # if the form has been submitted... if request.method == 'POST': form = form_cls (request.POST, request.FILES) # if the form is valid if form.is_valid(): # get the clean data and do the work msgs, results = self.process_form (form.cleaned_data) else: msgs, results = ( messages.Error ('there was a problem processing the form'), ) else: # if you're coming to the form anew, make an unbound form form = form_cls() helper = FormHelper() # Add in a class and id helper.form_id = 'this-form-rocks' helper.form_class = 'tool_form' # if necessary, do fieldsets if cls.fieldsets: sets = [] for field_pair in cls.fieldsets: if (isinstance (field_pair, basestring)): # if just a naked field name field_pair = ['', field_pair] sets.append (Fieldset (*field_pair)) helper.add_layout (Layout(*sets)) # add in submit actions and a reset button for button in cls.actions: submit = Submit (button[0], button[1]) helper.add_input (submit) reset = Reset ('reset','Reset form') helper.add_input (reset) ## Postconditions & return: context = self.context() context.update ({ 'identifier' : self.identifier, 'title' : self.title, 'description': self.description, 'form': form, 'results': results, 'msgs': msgs, 'helper': helper, }) return render_to_response ('relais.amergin/tool.html', context, context_instance=RequestContext(request))
def index(cls, request): ## Preconditions & preparation: results = msgs = None ## Main: # instantiate form in one of several ways ... form_cls = cls.ToolForm # if the form has been submitted... if request.method == "POST": form = form_cls(request.POST, request.FILES) # if the form is valid if form.is_valid(): # get the clean data and do the work msgs, results = cls.process_form(form.cleaned_data) else: msgs = [messages.Error("there was problem processing the form")] else: # if you're coming to the form anew, make an unbound form form = form_cls() helper = FormHelper() # Add in a class and id helper.form_id = "this-form-rocks" helper.form_class = "tool_form" # if necessary, do fieldsets if cls.fieldsets: sets = [] for field_pair in cls.fieldsets: if isinstance(field_pair, basestring): # if just a naked field name field_pair = ["", field_pair] sets.append(Fieldset(*field_pair)) helper.add_layout(Layout(*sets)) # add in submit actions and a reset button for button in cls.actions: submit = Submit(button[0], button[1].title()) helper.add_input(submit) reset = Reset("reset", "Reset form") helper.add_input(reset) ## Postconditions & return: return render_to_response( "relais.amergin/base_tool.html", { "identifier": cls.identifier, "title": cls.title, "description": cls.description, "form": form, "results": results, "messages": msgs, "helper": helper, }, )
def advanced_search(request, reset=False): marketplace = request.marketplace if reset: form = AdvancedSearchForm(marketplace=marketplace) else: form = AdvancedSearchForm(marketplace=marketplace, data=request.GET) if request.GET.get("do"): result_list = [] if form.is_valid(): result_list = form.search() pager = Paginator(result_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE) try: page = int(request.GET.get("page", "1")) except: page = 1 try: paginator = pager.page(page) except (EmptyPage, InvalidPage): raise Http404 paged = (pager.num_pages > 1) return render_to_response( "%s/buy/advanced_search_results.html" % marketplace.template_prefix, {"result_list": paginator, "form": form, "pages": pager.page_range, "paged": paged, "total": pager.count, "view_mode": form.cleaned_data["view_by"]}, RequestContext(request)) form_helper = FormHelper() layout = Layout( Fieldset("", "q"), Fieldset("", Row("categories", "subcategories")), Fieldset("", "include"), Fieldset("", Row("from_price", "to_price")), Fieldset("", "sort"), Fieldset("", "view_by"), ) form_helper.add_layout(layout) submit = Submit("do", _("Search")) submit.field_classes = "button_primary" form_helper.add_input(submit) return render_to_response( "%s/buy/advanced_search.html" % marketplace.template_prefix, {"form": form, "helper": form_helper} , RequestContext(request))
def test_formset_layout(self): template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form 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('class="uniForm 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) self.assertEqual(html.count('formRow'), 3)
def test_double_rendered_field(self): form = TestForm() form_helper = FormHelper() form_helper.add_layout(Layout('is_company', 'is_company')) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) settings.UNIFORM_FAIL_SILENTLY = False self.assertRaises(Exception, lambda: template.render(c)) del settings.UNIFORM_FAIL_SILENTLY
def test_formset_layout(self): template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form 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('class="uniForm 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) self.assertEqual(html.count('formRow'), 3)
def test_layout_invalid_unicode_characters(self): # Adds a BooleanField that uses non valid unicode characters "ñ" form = TestForm() form_helper = FormHelper() form_helper.add_layout(Layout('españa')) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) settings.UNIFORM_FAIL_SILENTLY = False self.assertRaises(Exception, lambda: template.render(c)) del settings.UNIFORM_FAIL_SILENTLY
def edit_job(request, object_id): return_to = request.GET.get('return_to', '') context_vars = dict() try: object_id = int(object_id) job = Job.objects.get(id=object_id) except ValueError: return HttpResponseRedirect(reverse('job-list')) except ObjectDoesNotExist: return HttpResponseRedirect(reverse('job-list')) try: staff = Staff.objects.get(user_ptr=request.user) if not job in staff.jobs.all(): return HttpResponseRedirect(reverse('job-list')) except ObjectDoesNotExist: pass context_vars['header'] = capfirst(_('edit job %s') % job.name) job_form = EditJobForm(instance=job) helper = FormHelper() submit = Submit('save',_('save')) helper.add_input(submit) recomended_staff_html = '' for s in ['%s, ' % staff for staff in job.get_valid_staff()]: recomended_staff_html +=s layout = Layout( 'state', Row(HTML('<span style="color:red">Recommended: %s</span>' % recomended_staff_html), HTML('<a href="%s">%s</a>' % (reverse('staff-add'), _('add new'))), 'staff'), Row(HTML('<a href="%s">%s</a>' % (reverse('supplier-add'), _('add new'))), 'suppliers'), ) helper.add_layout(layout) if request.method == "POST": job_form = EditJobForm(request.POST, request.FILES, instance=job) if job_form.is_valid(): job = job_form.save() if settings.WORKFLOWMAX_APIKEY and settings.WORKFLOWMAX_ACCOUNTKEY: job.wm_sync() # job.gcal_sync() if not return_to: return_to = reverse('job-view', args=[job.id]) messages.success(request, capfirst(_('job was modified successfully')), fail_silently=True) return HttpResponseRedirect(return_to) context_vars['form'] = job_form context_vars['helper'] = helper return direct_to_template(request, template='job/uniform.html', extra_context=context_vars)
def test_double_rendered_field(self): form = TestForm() form_helper = FormHelper() form_helper.add_layout( Layout( 'is_company', 'is_company' ) ) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) self.assertRaises(Exception, lambda:template.render(c))
def test_double_rendered_field(self): form = TestForm() form_helper = FormHelper() form_helper.add_layout(Layout("is_company", "is_company")) template = get_template_from_string( u""" {% load uni_form_tags %} {% uni_form form form_helper %} """ ) c = Context({"form": TestForm(), "form_helper": form_helper}) settings.UNIFORM_FAIL_SILENTLY = False self.assertRaises(Exception, lambda: template.render(c)) del settings.UNIFORM_FAIL_SILENTLY
def test_layout_within_layout(self): form_helper = FormHelper() form_helper.add_layout( Layout( Layout( MultiField("Some company data", 'is_company', 'email', css_id = "multifield_info", ), ), Column( 'first_name', # 'last_name', Missing a field on purpose css_id = "column_name", css_class = "columns", ), ButtonHolder( Submit('Save', 'Save', css_class='button white'), ), Div( 'password1', 'password2', css_id="custom-div", css_class="customdivs", ) ) ) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) html = template.render(c) self.assertTrue('multiField' in html) self.assertTrue('formColumn' in html) self.assertTrue('id="multifield_info"' in html) self.assertTrue('id="column_name"' in html) self.assertTrue('class="formColumn columns"' in html) self.assertTrue('class="buttonHolder">' in html) self.assertTrue('input type="submit"' in html) self.assertTrue('name="save"' in html) self.assertTrue('id="custom-div"' in html) self.assertTrue('class="customdivs"' in html) self.assertTrue('last_name' in html)
def test_layout_fieldset_row_html_with_unicode_fieldnames(self): form_helper = FormHelper() form_helper.add_layout( Layout( Fieldset( u'Company Data', u'is_company', css_id = "fieldset_company_data", css_class = "fieldsets" ), Fieldset( u'User Data', u'email', Row( u'password1', u'password2', css_id = "row_passwords", css_class = "rows" ), HTML('<a href="#" id="testLink">test link</a>'), HTML(u""" {% if flag %}{{ message }}{% endif %} """), u'first_name', u'last_name', ) ) ) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({ 'form': TestForm(), 'form_helper': form_helper, 'flag': True, 'message': "Hello!", }) html = template.render(c) self.assertTrue('id="fieldset_company_data"' in html) self.assertTrue('class="fieldsets' in html) self.assertTrue('id="row_passwords"' in html) self.assertTrue('class="formRow rows"' in html) self.assertTrue('Hello!' in html) self.assertTrue('testLink' in html)
def test_layout_invalid_unicode_characters(self): # Adds a BooleanField that uses non valid unicode characters "ñ" form = TestForm() form_helper = FormHelper() form_helper.add_layout(Layout("españa")) template = get_template_from_string( u""" {% load uni_form_tags %} {% uni_form form form_helper %} """ ) c = Context({"form": TestForm(), "form_helper": form_helper}) settings.UNIFORM_FAIL_SILENTLY = False self.assertRaises(Exception, lambda: template.render(c)) del settings.UNIFORM_FAIL_SILENTLY
def test_layout_invalid_unicode_characters(self): # Adds a BooleanField that uses non valid unicode characters "ñ" form = TestForm() form_helper = FormHelper() form_helper.add_layout( Layout( 'españa' ) ) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) self.assertRaises(Exception, lambda:template.render(c))
def helper(self): helper = FormHelper() layout = Layout( Fieldset('Choose a School or create a new one', HTML('<div id="choose">'), Row('school', HTML('<input type="button" id="new" onclick="click_new()" value="Add a new school"/>')), HTML('</div>'), HTML('<div id="create">'), 'school_name', 'school_url', 'school_email', 'school_phone', 'school_address', 'school_city', 'school_country', HTML('<input type="button" id="old" onclick="click_old()" value="Choose an already existent school"/>'), HTML('</div>'), ), Fieldset('', HTML('<p> </p>'), ), Fieldset('Fill in the course information', 'name', 'lecturer', 'language', 'level', 'type', 'url', 'description', ) ) helper.add_layout(layout) submit = Submit('submit','Save') helper.add_input(submit) helper.form_method = 'POST' helper.form_id = 'my_form' #helper.form_action = "/add_course/?status='old'" return helper
def test_layout_unresolved_field(self): form = TestForm() form_helper = FormHelper() form_helper.add_layout( Layout( 'typo' ) ) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) settings.UNIFORM_FAIL_SILENTLY = False self.assertRaises(Exception, lambda:template.render(c)) del settings.UNIFORM_FAIL_SILENTLY
def test_layout_within_layout(self): form_helper = FormHelper() form_helper.add_layout( Layout( Layout( MultiField( "Some company data", 'is_company', 'email', css_id="multifield_info", ), ), Column( 'first_name', # 'last_name', Missing a field on purpose css_id="column_name", css_class="columns", ), ButtonHolder(Submit('Save', 'Save', css_class='button white'), ), Div( 'password1', 'password2', css_id="custom-div", css_class="customdivs", ))) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({'form': TestForm(), 'form_helper': form_helper}) html = template.render(c) self.assertTrue('multiField' in html) self.assertTrue('formColumn' in html) self.assertTrue('id="multifield_info"' in html) self.assertTrue('id="column_name"' in html) self.assertTrue('class="formColumn columns"' in html) self.assertTrue('class="buttonHolder">' in html) self.assertTrue('input type="submit"' in html) self.assertTrue('name="save"' in html) self.assertTrue('id="custom-div"' in html) self.assertTrue('class="customdivs"' in html) self.assertTrue('last_name' in html)
def test_formset_layout(self): template = get_template_from_string( u""" {% load uni_form_tags %} {% uni_form 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('class="uniForm 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) self.assertEqual(html.count("formRow"), 3)
def helper(self): form = HelperAuthenticationForm() helper = FormHelper() login = Submit('login','Submit',css_class='primaryAction') helper.add_input(login) helper.form_action = 'login_form' helper.form_method = 'POST' # Only GET and POST are legal layout = Layout( Fieldset('', HTML('<input type="hidden" name="next" value="{{ request.GET.next }}" />'), 'identification', 'password', 'remember_me', css_class='inlineLabels'), ) helper.add_layout(layout) return helper
def test_layout_fieldset_row_html_with_unicode_fieldnames(self): form_helper = FormHelper() form_helper.add_layout( Layout( Fieldset(u'Company Data', u'is_company', css_id="fieldset_company_data", css_class="fieldsets"), Fieldset( u'User Data', u'email', Row(u'password1', u'password2', css_id="row_passwords", css_class="rows"), HTML('<a href="#" id="testLink">test link</a>'), HTML(u""" {% if flag %}{{ message }}{% endif %} """), u'first_name', u'last_name', ))) template = get_template_from_string(u""" {% load uni_form_tags %} {% uni_form form form_helper %} """) c = Context({ 'form': TestForm(), 'form_helper': form_helper, 'flag': True, 'message': "Hello!", }) html = template.render(c) self.assertTrue('id="fieldset_company_data"' in html) self.assertTrue('class="fieldsets' in html) self.assertTrue('id="row_passwords"' in html) self.assertTrue('class="formRow rows"' in html) self.assertTrue('Hello!' in html) self.assertTrue('testLink' in html)
def helper(self): helper = FormHelper() helper.add_input(Submit('submit', _('Submit!'))) layout = Layout( Fieldset('', 'name', 'description'), Fieldset(_('When and where'), 'date', 'time', 'town', 'other_town', 'place', ), Fieldset(_('Details'), 'organizer', 'link', 'contact', 'image', ), ) helper.add_layout(layout) helper.form_action = reverse('agenda:create') helper.form_method = 'post' helper.form_style = 'inline' return helper
def test_layout_fieldset_row_html_with_unicode_fieldnames(self): form_helper = FormHelper() form_helper.add_layout( Layout( Fieldset(u"Company Data", u"is_company", css_id="fieldset_company_data", css_class="fieldsets"), Fieldset( u"User Data", u"email", Row(u"password1", u"password2", css_id="row_passwords", css_class="rows"), HTML('<a href="#" id="testLink">test link</a>'), HTML( u""" {% if flag %}{{ message }}{% endif %} """ ), u"first_name", u"last_name", ), ) ) template = get_template_from_string( u""" {% load uni_form_tags %} {% uni_form form form_helper %} """ ) c = Context({"form": TestForm(), "form_helper": form_helper, "flag": True, "message": "Hello!"}) html = template.render(c) self.assertTrue('id="fieldset_company_data"' in html) self.assertTrue('class="fieldsets' in html) self.assertTrue('id="row_passwords"' in html) self.assertTrue('class="rows"' in html) self.assertTrue("Hello!" in html) self.assertTrue("testLink" in html)
def add_job(request): return_to = request.GET.get('return_to', '') context_vars = dict() context_vars['header'] = capfirst(_('add new job')) job_form = AddJobForm() helper = FormHelper() submit = Submit('save',_('save')) helper.add_input(submit) layout = Layout( # 'name', 'description', # 'state', 'type', 'start_date', 'due_date', Row(HTML('<a href="%s">%s</a>' % (reverse('client-add'), _('add new'))), 'client'), Row(HTML('<a href="%s">%s</a>' % (reverse('staff-add'), _('add new'))), 'staff'), Row(HTML('<a href="%s">%s</a>' % (reverse('supplier-add'), _('add new'))), 'suppliers'), ) helper.add_layout(layout) if request.method == "POST": job_form = AddJobForm(request.POST, request.FILES) if job_form.is_valid(): job = job_form.save() if settings.WORKFLOWMAX_APIKEY and settings.WORKFLOWMAX_ACCOUNTKEY: job.wm_sync() job.gcal_sync() if not return_to: return_to = reverse('job-view', args=[job.id]) messages.success(request, capfirst(_('job was created successfully')), fail_silently=True) return HttpResponseRedirect(return_to) context_vars['form'] = job_form context_vars['helper'] = helper return direct_to_template(request, template='job/uniform.html', extra_context=context_vars)
from carpool.fields.datetime import DateTimeSelectWidget, DateSelectWidget, TimeSelectWidget from uni_form.helpers import FormHelper, Submit, Reset from uni_form.helpers import Layout, Fieldset, Row, Column, HTML TripFormHelper = FormHelper() layout = Layout( Fieldset(_('Trip details'), Column('email', 'when'), css_class='span-5'), Fieldset(_('Route'), 'travel_path', css_class='span-15') ) TripFormHelper.add_layout(layout) submit = Submit('add', _('Add this contact')) TripFormHelper.add_input(submit) class TripForm(forms.ModelForm): class Meta: model = Trip widgets = {'when': DateTimeSelectWidget} travel_path = DirectionsFormField(label=_('Route')) helper = TripFormHelper
comment_form_layout = Layout( Fieldset('', 'parent', 'content_type', 'security_hash', 'title', 'name', 'email', 'url', 'comment', 'honeypot' ) ) comment_form_helper.add_layout(comment_form_layout) comment_form_helper.form_action = reverse('comments-post-comment') comment_form_helper.form_method = 'POST' comment_form_helper.add_input(Submit('post','Post')) comment_form_helper.add_input(Submit('preview','Preview')) search_form_helper = FormHelper() search_form_layout = Layout( Fieldset('', 'q', 'models' ) )
def root(request, client_name=None, client_id=None, add_job=False): client_query = request.GET.get('q', '') if client_query: return HttpResponseRedirect(reverse('schedule-client', args=[client_query,])) context_vars = dict() context_vars['header'] = capfirst(_('schedule')) try: staff = Staff.objects.get(user_ptr=request.user) context_vars['staff'] = staff except ObjectDoesNotExist: staff = None client = None if client_id: try: client = Client.objects.get(id=client_id) except ObjectDoesNotExist: return HttpResponseRedirect(reverse('schedule-root')) if client_name: clients = Client.objects.search(client_name) if clients: if len(clients) == 1: client = clients[0] else: context_vars['clients'] = clients else: context_vars['client_form'] = RootPageClientForm(prefix='client', instance=Client(name=client_name)) context_vars['client_form'].action = reverse('schedule-client-add') context_vars['address_form'] = RootPageAddressForm(prefix='address') if client: context_vars['client'] = client try: job = client.jobs.latest() except ObjectDoesNotExist: add_job = True if add_job: job_form = RootPageAddJobForm() helper = FormHelper() helper.set_form_action('%s?return_to=%s' % (reverse('job-add'), reverse('schedule-client-byid', args=[client.id,]))) submit = Submit('save',_('save')) helper.add_input(submit) layout = Layout( HTML('<h3>%s</h3>' % capfirst(_('job details'))), 'description', 'type', HTML('<h3>%s</h3>' % capfirst(_('time and staff'))), 'start_date', 'due_date', 'staff' ) helper.add_layout(layout) context_vars['job_form'] = job_form client_input = Hidden('client', client.id) helper.add_input(client_input) context_vars['helper'] = helper else: context_vars['job_edit_form'] = RootPageEditJobForm(instance=job) editjob_helper = FormHelper() editjob_helper.set_form_action('%s?return_to=%s' % (reverse('job-edit', args=[job.id]), reverse('schedule-client-byid', args=[client.id,]))) submit = Submit('save',_('save')) editjob_helper.add_input(submit) recomended_staff_html = '' for s in ['%s, ' % staff for staff in job.get_valid_staff()]: recomended_staff_html +=s layout = Layout( 'state', Row(HTML('<span style="color:red">Recommended: %s</span>' % recomended_staff_html), HTML('<a href="%s">%s</a>' % (reverse('staff-add'), _('add new'))), 'staff'), ) editjob_helper.add_layout(layout) context_vars['edit_job_helper'] = editjob_helper context_vars['staff_list'] = Staff.objects.all() return direct_to_template(request, template='schedule/root.html', extra_context=context_vars)
def _make_helper(layout_fields): from uni_form.helpers import Layout, Fieldset, FormHelper helper = FormHelper() helper.add_layout(Layout(*[str(field) if isinstance(field, basestring) else field for field in layout_fields])) return helper