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
Exemple #4
0
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)