コード例 #1
0
    def __init__(self, project, data=None, is_datasender=False, datasender_name=''):
        super(SurveyResponseForm, self).__init__(project, data, is_datasender, datasender_name)

        for field in self.form_model.fields:
            if isinstance(field, UniqueIdField):
                self.fields[field.code] = SubjectQuestionFieldCreator(self.form_model).create(field)
            else:
                form_field = FormField().create(field)
                if data:
                    form_field.initial = data.get(field.code)
                self.fields[field.code] = form_field
コード例 #2
0
 def test_phone_number_field(self):
     field = TelephoneNumberField(
         'phone',
         'phone_code',
         'phone',
         constraints=[
             TextLengthConstraint(min=10, max=12),
             RegexConstraint(reg='^[0-9]+$')
         ],
         instruction=
         "Answer must be country code plus telephone number. Example: 261333745269"
     )
     phone_field = FormField().create(field)
     self.assertTrue(isinstance(phone_field, PhoneNumberField))
     self.assertEqual(len(phone_field.validators), 3)
     self.assertEqual(phone_field.widget.attrs['watermark'],
                      'Between 10 -- 12 characters')
     validator_types = []
     for validator in phone_field.validators:
         validator_types.append(type(validator))
     self.assertTrue(MinLengthValidator in validator_types)
     self.assertTrue(MaxLengthValidator in validator_types)
     self.assertTrue(RegexValidator in validator_types)
     self.assertEqual(
         field.instruction,
         "Answer must be country code plus telephone number. Example: 261333745269"
     )
コード例 #3
0
 def test_location_field(self):
     field = HierarchyField(LOCATION_TYPE_FIELD_NAME, "some_code",
                            "some label")
     location_field = FormField().create(field)
     self.assertEquals(location_field.widget.attrs['class'],
                       'location_field')
     self.assertEquals(location_field.widget.attrs['watermark'], '')
コード例 #4
0
 def __init__(self, form_model, data=None, country=None):
     super(SubjectRegistrationForm, self).__init__(form_model, data)
     self.country = country
     self.fields[u't'] = CharField(widget=HiddenInput, initial=self.form_model.entity_type[0])
     for field in self.form_model.fields:
         if field.is_entity_field:
             self.fields[field.code] = self.regex_field(field)
         else:
             self.fields[field.code] = FormField().create(field)
コード例 #5
0
    def test_gps_field(self):
        field = GeoCodeField("gps 1", "gps1", "gps of this")
        geo_code_field = FormField().create(field)

        self.assertEquals(1, len(geo_code_field.validators))
        self.assertTrue(
            isinstance(geo_code_field.validators[0], GeoCodeValidator))
        self.assertEquals(geo_code_field.widget.attrs["watermark"],
                          "xx.xxxx,yy.yyyy")
        self.assertIsNone(geo_code_field.widget.attrs.get('class'))
コード例 #6
0
 def test_select_field_creation_with_single_select(self):
     select_field = SelectField("select something", "some_code",
                                "what do u want to select", [('opt1', 'a'),
                                                             ('opt2', 'b'),
                                                             ('opt3', 'c')])
     select_field.value = 'a'
     choice_field = FormField().create(select_field)
     self.assertTrue(isinstance(choice_field.widget, forms.widgets.Select))
     self.assertEquals(choice_field.initial, 'a')
     self.assertEquals([('', '--None--'), ('a', 'opt1'), ('b', 'opt2'),
                        ('c', 'opt3')], choice_field.choices)
コード例 #7
0
    def __init__(self, manager, project, questionnaire_form_model, data):
        super(EditSubmissionForm, self).__init__(data=data)
        self.form_model = questionnaire_form_model
        self.fields['form_code'] = CharField(
            widget=HiddenInput, initial=questionnaire_form_model.form_code)
        if questionnaire_form_model.entity_question is not None:
            entity_question = questionnaire_form_model.entity_question
            choices = EntityField(manager,
                                  project).create(entity_question,
                                                  project.entity_type)
            self.fields[entity_question.code] = choices.get(
                entity_question.code)
            self.short_code_question_code = questionnaire_form_model.entity_question.code

        for field in questionnaire_form_model.fields:
            if not field.is_entity_field:
                form_field = FormField().create(field)
                form_field.initial = data.get(field.code) if data.get(
                    field.code) is not None else data.get(field.code.lower())
                self.fields[field.code] = form_field
コード例 #8
0
    def test_integer_field_for_min_number(self):
        int_field = IntegerField(
            "age",
            'age',
            'age',
            constraints=[NumericRangeConstraint(min='100')])

        field = FormField().create(int_field)
        self.assertTrue(isinstance(field.widget, TextInputForFloat))
        self.assertEquals(field.widget.attrs['watermark'], 'Minimum 100')
        self.assertEqual(field.min_value, 100)
        self.assertEqual(field.max_value, None)
コード例 #9
0
 def test_select_field_creation_with_multi_select(self):
     select_field = SelectField("select something",
                                "some_code",
                                "what do u want to select", [('opt1', 'a'),
                                                             ('opt2', 'b'),
                                                             ('opt3', 'c')],
                                single_select_flag=False)
     select_field.value = 'opt1,opt2'
     choice_field = FormField().create(select_field)
     self.assertTrue(
         isinstance(choice_field.widget, forms.CheckboxSelectMultiple))
     self.assertEquals(choice_field.initial, ['a', 'b'])
     self.assertEquals([('a', 'opt1'), ('b', 'opt2'), ('c', 'opt3')],
                       choice_field.choices)
コード例 #10
0
    def test_entity_field(self):
        field = ShortCodeField(
            "name",
            "name",
            "what is ur name",
            constraints=[TextLengthConstraint(min=5, max=100)])
        entity_field = FormField().create(field)

        self.assertEquals(2, len(entity_field.validators))
        self.assertEquals(entity_field.widget.attrs["watermark"],
                          "Between 5 -- 100 characters")
        self.assertEquals(entity_field.widget.attrs['class'], 'subject_field')
        self.assertEqual(entity_field.min_length, 5)
        self.assertEqual(entity_field.max_length, 100)
コード例 #11
0
    def test_integer_field_for_max_number(self):
        int_field = IntegerField(
            "age",
            'age',
            'age',
            "Answer must be a number. The maximum is 100.",
            constraints=[NumericRangeConstraint(max='100')])

        field = FormField().create(int_field)
        self.assertTrue(isinstance(field.widget, TextInputForFloat))
        self.assertEquals(field.widget.attrs['watermark'], 'Upto 100')
        self.assertEqual(field.max_value, 100)
        self.assertEqual(field.min_value, None)
        self.assertEqual(field.help_text,
                         "Answer must be a number. The maximum is 100.")
コード例 #12
0
 def __init__(self, form_model, data=None, country=None):
     super(SubjectRegistrationForm, self).__init__(form_model, data)
     self.country = country
     self.fields[u't'] = CharField(widget=HiddenInput,
                                   initial=self.form_model.entity_type[0])
     for field in self.form_model.fields:
         if isinstance(field, UniqueIdField):
             self.fields[field.code] = SubjectQuestionFieldCreator(
                 self.form_model, has_linked_idnr=True).create(field)
         elif field.is_entity_field:
             self.fields[field.code] = self.regex_field(field)
         else:
             field.set_instruction(
                 get_subject_field_instruction(
                     field, entity_type=self.form_model.entity_type[0]))
             self.fields[field.code] = FormField().create(field)
コード例 #13
0
    def test_gps_field(self):
        field = GeoCodeField(
            "gps 1", "gps1", "gps of this",
            "Answer must be GPS coordinates in the following format (latitude,longitude). Example: -18.1324,27.6547"
        )
        geo_code_field = FormField().create(field)

        self.assertEquals(1, len(geo_code_field.validators))
        self.assertTrue(
            isinstance(geo_code_field.validators[0], GeoCodeValidator))
        self.assertEquals(geo_code_field.widget.attrs["watermark"],
                          "xx.xxxx,yy.yyyy")
        self.assertIsNone(geo_code_field.widget.attrs.get('class'))
        self.assertEqual(
            field.instruction,
            "Answer must be GPS coordinates in the following format (latitude,longitude). Example: -18.1324,27.6547"
        )
コード例 #14
0
 def test_phone_number_field(self):
     field = TelephoneNumberField('phone',
                                  'phone_code',
                                  'phone',
                                  self.ddtype,
                                  constraints=[
                                      TextLengthConstraint(min=10, max=12),
                                      RegexConstraint(reg='^[0-9]+$')
                                  ])
     phone_field = FormField().create(field)
     self.assertTrue(isinstance(phone_field, PhoneNumberField))
     self.assertEqual(len(phone_field.validators), 3)
     self.assertEqual(phone_field.widget.attrs['watermark'],
                      'Between 10 -- 12 characters')
     validator_types = []
     for validator in phone_field.validators:
         validator_types.append(type(validator))
     self.assertTrue(MinLengthValidator in validator_types)
     self.assertTrue(MaxLengthValidator in validator_types)
     self.assertTrue(RegexValidator in validator_types)