示例#1
0
    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)
示例#2
0
    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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
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
示例#7
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)
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),
    }