def test_should_pre_populate_choices_for_subject_question_on_basis_of_entity_type( self): expected_code = "expected_code" subject_field = self._get_text_field(True, True, expected_code) project = self._get_mock_project() option_list = [('clinic1', 'Clinic One (clinic1)'), ('clinic2', 'Clinic Two (clinic2)')] project.entity_type.return_value = ["Clinic"] project.is_on_type.return_value = False expected_choices = [('clinic1', 'Clinic One (clinic1)'), ('clinic2', 'Clinic Two (clinic2)')] subject_question_field_creator = SubjectQuestionFieldCreator( self.dbm, project) subject_question_field_creator._get_all_options = Mock( return_value=option_list) display_subject_field = subject_question_field_creator.create( subject_field) self.assertEqual(expected_choices, display_subject_field.choices) subject_question_code_hidden_field_dict = SubjectQuestionFieldCreator(self.dbm, project) \ .create_code_hidden_field(subject_field) self.assertEqual( expected_code, subject_question_code_hidden_field_dict['entity_question_code']. label)
def test_should_build_choice_from_subject(self): creator = SubjectQuestionFieldCreator(None, None) data = { 'name': 'lastlast', 'location': u'ff,Madagascar', 'geo_code': '18.1324, 27.6547', 'short_code': u'123ABC', 'unique_id': '123abc' } choice = creator._data_to_choice(data) self.assertEqual((u'123abc', u'lastlast (123ABC)'), choice)
def test_should_pre_populate_choices_for_subject_question_on_basis_of_entity_type( self): expected_code = "expected_code" subject_field = self._get_unique_id_field(expected_code) project = self._get_mock_project() option_list = [('clinic1', 'Clinic One (clinic1)'), ('clinic2', 'Clinic Two (clinic2)')] expected_choices = [('clinic1', 'Clinic One (clinic1)'), ('clinic2', 'Clinic Two (clinic2)')] subject_question_field_creator = SubjectQuestionFieldCreator(project) subject_question_field_creator._get_all_options = Mock( return_value=option_list) display_subject_field = subject_question_field_creator.create( subject_field) self.assertEqual(expected_choices, display_subject_field.choices)
def test_should_pre_populate_datasenders_for_subject_question(self): subject_field = self._get_text_field(True, True) project = self._get_mock_project() display_subject_field = SubjectQuestionFieldCreator( self.dbm, project).create(subject_field) self.assertEqual(ChoiceField, type(display_subject_field)) expected_choices = [('a', 'reporter1 (a)'), ('b', 'reporter2 (b)')] self.assertEqual(expected_choices, display_subject_field.choices)
def __init__(self, request, project_id=None): self.request = request self.manager = get_database_manager(self.request.user) self.project = Project.load(self.manager.database, project_id) self.form_model = FormModel.get(self.manager, self.project.qid) self.form_code = self.form_model.form_code self.feeds_dbm = get_feeds_database(request.user) self.subject_field_creator = SubjectQuestionFieldCreator(self.manager, self.project) self.is_data_sender = self.request.user.get_profile().reporter self.disable_link_class, self.hide_link_class = get_visibility_settings_for(self.request.user)
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 __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 get_web_preview_context(manager, post, project_info): form_model = get_questionnaire_form_model(manager, project_info, post) project = Project(name=unicode(project_info['name']), goals=unicode(project_info['goals']), project_type='survey', entity_type=unicode(project_info['entity_type']), activity_report=unicode(project_info['activity_report']), state=post['project_state'], devices=[u'sms', u'web', u'smartPhone'], language=unicode(project_info['language'])) questionnaire_form = SurveyResponseForm( form_model, SubjectQuestionFieldCreator(manager, project)) return { 'project': project_info, 'questionnaire_form': questionnaire_form, 'add_link': add_link_context(project), }