def test_empty_checker(self): form = formish.Form(self._schema(), 'form') form['seq'].widget = formish.SequenceDefault() # Structure should be in form ... self.assertTrue('seq.0.foo' in form()) # ... but not in data self.assertEquals(form.validate(self.Request('form', {})), {'seq': []})
def test_min_start_with_data(self): form = formish.Form(self._schema(), 'form') form['seq'].widget = formish.SequenceDefault() form.defaults = {'seq': [{'foo': 'bar'}]} html = form() self.assertTrue('seq.0.foo' in html) self.assertTrue('value="bar"' in html) self.assertTrue('seq.1.foo' not in html)
def test_min_start_fields(self): for i in range(1, 5): form = formish.Form(self._schema(), 'form') form['seq'].widget = formish.SequenceDefault(min_start_fields=i) html = form() for num in range(i): self.assertTrue('seq.%d.foo' % num in html) self.assertEquals(form.validate(self.Request('form', {})), {'seq': []})
def test_first_entry(self): form = formish.Form(self._schema(), 'form') form['seq'].widget = formish.SequenceDefault(min_start_fields=2) self.assertEquals( form.validate( self.Request('form', [('seq.0.foo', 'bar'), ('seq.1.foo', '')])), {'seq': [{ 'foo': 'bar' }]})
def form_widgets(self, fields): widgets = {} widgets['date'] = formish.DateParts(day_first=True) widgets['recurring_stop'] = formish.DateParts(day_first=True) widgets['payment_date'] = formish.DateParts(day_first=True) session = DBSession() options = [] query = session.query(CustomerContact.id, Customer.name, CustomerContact.first_name, CustomerContact.last_name) query = query.join(CustomerContact.customer) query = query.order_by(Customer.name, CustomerContact.last_name, CustomerContact.first_name) for (contact_id, company, first_name, last_name) in query.all(): options.append( (contact_id, '%s: %s %s' % (company, first_name, last_name))) widgets['customer_contact_id'] = formish.SelectChoice(options=options) widgets['item_list'] = formish.SequenceDefault(min_start_fields=1) widgets['item_list.*.item_id'] = formish.Hidden() widgets['item_list.*.service_description'] = formish.TextArea() return widgets
def test_empty_first_entry(self): form = formish.Form(self._schema(), 'form') form['seq'].widget = formish.SequenceDefault(min_start_fields=2) self.assertRaises( formish.FormError, form.validate, self.Request('form', [('seq.0.foo', ''), ('seq.1.foo', 'bar')]))
def test_min_start_fields_default(self): form = formish.Form(self._schema(), 'form') form['seq'].widget = formish.SequenceDefault() html = form() self.assertTrue('seq.0.foo' in html) self.assertTrue('seq.1.foo' not in html)