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
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" )
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'], '')
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)
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'))
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)
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
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)
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)
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)
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.")
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)
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" )
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)