def get_blocks(self):
        blocks = []

        for group in SchemaHelper.get_groups(self.survey_json):
            if 'skip_condition' in group:
                skip = evaluate_skip_condition(group['skip_condition'],
                                               self.metadata,
                                               self.answer_store)
                if skip:
                    continue

            no_of_repeats = 1
            repeating_rule = SchemaHelper.get_repeat_rule(group)

            if repeating_rule:
                no_of_repeats = evaluate_repeat(repeating_rule,
                                                self.answer_store)

            for i in range(0, no_of_repeats):
                for block in group['blocks']:
                    if 'skip_condition' in block:
                        skip = evaluate_skip_condition(block['skip_condition'],
                                                       self.metadata,
                                                       self.answer_store)
                        if skip:
                            continue

                    blocks.append({
                        "group_id": group['id'],
                        "group_instance": i,
                        "block": block,
                    })
        return blocks
Beispiel #2
0
    def test_get_repeating_rule(self):
        survey = load_schema_file("test_repeating_household.json")
        groups = [group for group in SchemaHelper.get_groups(survey)]
        rule = SchemaHelper.get_repeat_rule(groups[1])

        self.assertEqual(
            {
                'type': 'answer_count',
                'answer_id': 'first-name',
                'navigation_label_answer_ids': ['first-name', 'last-name'],
            }, rule)
Beispiel #3
0
    def test_get_groups(self):
        survey = load_schema_file("test_repeating_household.json")
        groups = [group for group in SchemaHelper.get_groups(survey)]

        self.assertEqual(len(groups), 3)