Пример #1
0
def build_relationship_choices(answer_store, group_instance):
    """
    A function to build a list of tuples of as yet undefined person relationships

    :param answer_store: The answer store to use for current answers
    :param group_instance: The instance of the group being iterated over
    :return:
    """
    household_first_name_answers = answer_store.filter(
        block_id='household-composition',
        answer_id='first-name',
        limit=settings.EQ_MAX_NUM_REPEATS)
    household_last_name_answers = answer_store.filter(
        block_id='household-composition',
        answer_id='last-name',
        limit=settings.EQ_MAX_NUM_REPEATS)

    first_names = []
    last_names = []

    for answer in household_first_name_answers:
        first_names.append(answer['value'])

    for answer in household_last_name_answers:
        last_names.append(answer['value'])

    household_members = []

    for first_name, last_name in zip(first_names, last_names):
        household_members.append({
            'first-name': first_name,
            'last-name': last_name,
        })
    remaining_people = household_members[group_instance +
                                         1:] if group_instance < len(
                                             household_members) else []

    current_person_name = format_household_member_name([
        household_members[group_instance]['first-name'],
        household_members[group_instance]['last-name'],
    ])

    choices = []

    for remaining_person in remaining_people:
        other_person_name = format_household_member_name([
            remaining_person['first-name'],
            remaining_person['last-name'],
        ])
        choices.append((current_person_name, other_person_name))

    return choices
Пример #2
0
def build_relationship_choices(answer_store, group_instance):  # pylint: disable=too-many-locals
    """
    A function to build a list of tuples of as yet undefined person relationships

    :param answer_store: The answer store to use for current answers
    :param group_instance: The instance of the group being iterated over
    :return:
    """
    household_first_name_answers = answer_store.filter(
        answer_ids=['first-name'], limit=True)
    household_last_name_answers = answer_store.filter(answer_ids=['last-name'],
                                                      limit=True)

    first_names = []
    last_names = []

    for answer in household_first_name_answers:
        first_names.append(answer['value'])

    for answer in household_last_name_answers:
        last_names.append(answer['value'])

    household_members = []

    for first_name, last_name in zip(first_names, last_names):
        household_members.append({
            'first-name': first_name,
            'last-name': last_name,
        })
    remaining_people = household_members[group_instance +
                                         1:] if group_instance < len(
                                             household_members) else []

    current_person_name = format_household_member_name([
        household_members[group_instance]['first-name'],
        household_members[group_instance]['last-name'],
    ])

    choices = []

    for remaining_person in remaining_people:
        other_person_name = format_household_member_name([
            remaining_person['first-name'],
            remaining_person['last-name'],
        ])
        choices.append((current_person_name, other_person_name))

    return choices
    def test_format_household_member_name_trim_spaces(self):
        # Given
        name = ['John  ', '   Doe   ']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John Doe')
    def test_format_household_member_name_middle_name_is_none(self):
        # Given
        name = ['John', None, 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John Doe')
    def test_format_household_member_name_first_middle_and_last(self):
        # Given
        name = ['John', 'J', 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John J Doe')
    def test_format_household_member_name_first_name_is_none(self):
        # Given
        name = [None, 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'Doe')
    def test_format_household_member_name_no_surname(self):
        # Given
        name = ['John', '']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John')
Пример #8
0
    def build_repeating_state(self, user_input):
        template_answer = self.answers.pop()
        group_instance = template_answer.group_instance

        first_name_answers = get_answer_store(current_user).filter(
            answer_id='first-name')
        last_name_answers = get_answer_store(current_user).filter(
            answer_id='last-name')

        first_names = [answer['value'] for answer in first_name_answers]
        last_names = [answer['value'] for answer in last_name_answers]

        household_members = []
        for first_name, last_name in zip(first_names, last_names):
            household_members.append({
                'first-name': first_name,
                'last-name': last_name,
            })

        remaining_people = household_members[group_instance +
                                             1:] if self.group_instance < len(
                                                 household_members) else []

        current_person_name = format_household_member_name([
            household_members[group_instance]['first-name'],
            household_members[group_instance]['last-name'],
        ])

        for index, remaining_person in enumerate(remaining_people):
            for answer_schema in self.schema_item.answers:
                new_answer_state = self.create_new_answer_state(
                    answer_schema, index, group_instance)

                new_answer_state.schema_item.widget.current_person = current_person_name

                other_person_name = format_household_member_name([
                    remaining_person['first-name'],
                    remaining_person['last-name'],
                ])
                new_answer_state.schema_item.widget.other_person = other_person_name
                self.answers.append(new_answer_state)