Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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
Пример #7
0
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))
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
	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))
Пример #11
0
    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,
            },
        )
Пример #12
0
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))
Пример #13
0
    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)
Пример #14
0
    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
Пример #15
0
    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)
Пример #16
0
    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
Пример #17
0
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)
Пример #18
0
    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))
Пример #19
0
    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
Пример #20
0
    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)
Пример #21
0
    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)
Пример #22
0
    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
Пример #23
0
 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))
Пример #24
0
    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>&nbsp;</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
Пример #25
0
    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
Пример #26
0
    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)
Пример #27
0
    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)
Пример #28
0
    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
Пример #29
0
    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)
Пример #30
0
    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
Пример #31
0
    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)
Пример #32
0
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'
    )
)
Пример #35
0
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)
Пример #36
0
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