def minimal_form(self): form = form_ui.Form('A test form') self.assertEqual(form.text, 'A test form') self.assertEqual(form.name, None) self.assertEqual(form.version, None) self.assertEqual(form.form_type, 'case') self.assertEqual(form.allow_multiple, False) self.assertEqual(form.table, None) args = dict(name='testform_name', form_type='testform_type', allow_multiple=True) form = form_ui.Form('A test form', **args) self.assertEqual(form.text, 'A test form') for k, v in args.items(): av = getattr(form, k) self.assertEqual(av, v, '%s: attr %s != arg %s' % (k, av, v))
def form_with_section_and_questions(self): form = form_ui.Form('A test form') section = form_ui.Section('A section') form.append(section) self.assertEqual(form.text, 'A test form') self.assertEqual(len(form), 1) self.assertEqual(len(form.children[0]), 0) self.assertEqual(form.children[0].text, 'A section') section.question('A question') self.assertEqual(len(form.children[0]), 1) question = form.children[0].children[0] self.assertEqual(question.text, 'A question') self.assertEqual(question.inputs, []) self.assertEqual(question.help, None) self.assertEqual(question.disabled, False) section.question('A second question', help='Some help', disabled=True) self.assertEqual(len(form.children[0]), 2) question = form.children[0].children[1] self.assertEqual(question.text, 'A second question') self.assertEqual(question.inputs, []) self.assertEqual(question.help, 'Some help') self.assertEqual(question.disabled, True) form.question('A form question') self.assertEqual(len(form), 2) question = form.children[1] self.assertEqual(question.text, 'A form question')
def get_form_ui(self): synd = syndrome.syndromes[self.syndrome_id] f = form_ui.Form('%s %s' % (synd.name, self.name), table='None') f.question(text=synd.description, inputs=[]) demog_fields = demogfields.get_demog_fields(globals.db, self.syndrome_id) for field in demog_fields.context_fields('case'): if field.render in ('textinput', 'case_dob'): f.question(text=field.label, input=form_ui.TextInput(field.name)) elif field.render == 'textarea': f.question(text=field.label, input=form_ui.TextArea(field.name)) elif field.render == 'dateinput': f.question(text=field.label, input=form_ui.TextInput(field.name, post_text='dd-mm-yyyy')) elif field.render == 'datetimeinput': f.question(text=field.label, input=form_ui.TextInput( field.name, post_text='dd-mm-yyyy HH:MM')) elif field.render == 'select': f.question(text=field.label, input=form_ui.RadioList(field.name, choices=field.optionexpr())) f.update_labels() return f
def get_testform(): form = form_ui.Form(name='testform', text='Test Form', form_type='testform') section = form_ui.Section('Section 1') section.question(text='First Question', input=form_ui.YesNo('input_a', required=True, summary='Input A')) section.question(text='Second Question', inputs=[ form_ui.TextInput('q2a', pre_text='Part A'), form_ui.TextInput('q2b', pre_text='Part B'), form_ui.TextInput('q2c', pre_text='Part C'), ]) form.append(section) form.question(text='Third Question', input=form_ui.RadioList('q3', required=True, direction='horizontal', choices=[ ('a', 'A'), ('b', 'B'), ('c', 'C'), ])) return form
def __init__(self, dbrow, cred=None): self.name = dbrow.label # Yes, it's muddled-up self.cred = cred self.root = None self.version = None self._set_dbrow(dbrow) try: self.load_version(self.highest_file_vers()) except form_ui.NoFormError: self.from_form(form_ui.Form('')) self.clear_changed()
def runTest(self): # Some string that will cause a parse error from all our loaders: self.assertRaises(form_ui.FormParseError, self.load, StringIO('<abc')) form = form_ui.Form('Test form', name='testform', form_type='abc', allow_multiple=True) self._test(form) section = form_ui.Section('Section A') form.append(section) self._test(form) form.question(text='Question A', input=form_ui.TextInput('input_a', summary='xyz blah')) section.question(text='Question B', disabled=True, help='AbC<p>dEf&gh', trigger_mode='enable', triggers=['input_c'], input=form_ui.TextInput('input_b', pre_text='pretextxx', post_text='posttextyy', maxsize=10)) self._test(form) section.question(text='Question C', input=form_ui.CheckBoxes( 'input_c', choices=[('a', 'Choice A'), ('b', 'Choice B')], skips=[ form_ui.Skip('input_c', ['a'], True), form_ui.Skip('input_c', ['b'], not_selected=True, show_msg=False, skip_remaining=False) ], default='b', required=True, direction='horizontal')) section.question(text='Question D', inputs=[ form_ui.FloatInput('input_da', minimum=10, maximum=20), form_ui.IntInput('input_db', minimum=10, maximum=20) ]) self._test(form)