Beispiel #1
0
    def test_advanced_xform_create_owner_id_explicitly_set(self):
        """When owner_id is explicitly set, don't autoset"""
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {'owner_id': 'owner'},
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'child'
                },
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {'owner_id': 'owner'},
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension'
                },
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {'owner_id': 'owner'},
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction()
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))
Beispiel #2
0
    def test_advanced_xform_create_owner_id_explicitly_set(self):
        """When owner_id is explicitly set, don't autoset"""
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {'owner_id': 'owner'},
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'child'
                },
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {'owner_id': 'owner'},
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension'
                },
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {'owner_id': 'owner'},
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction()
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))
 def _test_relationships(relationships, expected):
     advanced_open_action = AdvancedOpenCaseAction.wrap({'case_indices': [{
         'tag': 'tag{}'.format(i),
         'reference_id': 'case',
         'relationship': r,
     } for i, r in enumerate(relationships)]})
     self.assertEqual(autoset_owner_id_for_advanced_action(advanced_open_action), expected)
    def test_advanced_xform_create_owner_id_explicitly_set(self):
        """When owner_id is explicitly set, don't autoset"""
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {"owner_id": {
                                "doc_type": "ConditionalCaseUpdate",
                                "question_path": "owner",
                                "update_mode": "always"}
                                },
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'child'
                },
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {"owner_id": {
                                "doc_type": "ConditionalCaseUpdate",
                                "question_path": "owner",
                                "update_mode": "always"}
                                },
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension'
                },
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_properties': {"owner_id": {
                                "doc_type": "ConditionalCaseUpdate",
                                "question_path": "owner",
                                "update_mode": "always"}
                                },
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        advanced_open_action = AdvancedOpenCaseAction()
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))
Beispiel #5
0
    def test_advanced_xform_create_owner_id_with_without_extensions(self):
        """ Owner id should be automatically set if there are any non-extension indices"""

        # Only extensions
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension',
                },
                {
                    'tag': 'father',
                    'reference_id': 'case',
                    'relationship': 'extension',
                }
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        # Extension and children
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension',
                },
                {
                    'tag': 'father',
                    'reference_id': 'case',
                    'relationship': 'child',
                }
            ]
        })
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))

        # No indices
        advanced_open_action = AdvancedOpenCaseAction()
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))
Beispiel #6
0
    def test_advanced_xform_create_owner_id_with_without_extensions(self):
        """ Owner id should be automatically set if there are any non-extension indices"""

        # Only extensions
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension',
                },
                {
                    'tag': 'father',
                    'reference_id': 'case',
                    'relationship': 'extension',
                }
            ]
        })
        self.assertFalse(autoset_owner_id_for_advanced_action(advanced_open_action))

        # Extension and children
        advanced_open_action = AdvancedOpenCaseAction.wrap({
            'case_indices': [
                {
                    'tag': 'mother',
                    'reference_id': 'case',
                    'relationship': 'extension',
                },
                {
                    'tag': 'father',
                    'reference_id': 'case',
                    'relationship': 'child',
                }
            ]
        })
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))

        # No indices
        advanced_open_action = AdvancedOpenCaseAction()
        self.assertTrue(autoset_owner_id_for_advanced_action(advanced_open_action))
Beispiel #7
0
    def add_subcase_block(self):

        parent_node = self.xform.data_node
        action = next(self.form.actions.get_open_actions())
        case_id = session_var(action.case_session_var)
        subcase_node = _make_elem('{x}subcase_0')
        parent_node.append(subcase_node)
        subcase_node.insert(0, self.subcase_block.elem)
        self.subcase_block.add_create_block(
            relevance=self.xform.action_relevance(action.open_condition),
            case_name=self.subcase.case_name,
            case_type=self.subcase.case_type,
            delay_case_id=bool(self.subcase.repeat_context),
            autoset_owner_id=autoset_owner_id_for_advanced_action(action),
            has_case_sharing=self.form.get_app().case_sharing,
            case_id=case_id)
        self.subcase_block.add_update_block(self.subcase.case_properties)
Beispiel #8
0
    def add_subcase_block(self):

        parent_node = self.xform.data_node
        action = next(self.form.actions.get_open_actions())
        case_id = session_var(action.case_session_var)
        subcase_node = _make_elem('{x}subcase_0')
        parent_node.append(subcase_node)
        subcase_node.insert(0, self.subcase_block.elem)
        self.subcase_block.add_create_block(
            relevance=self.xform.action_relevance(action.open_condition),
            case_name=self.subcase.case_name,
            case_type=self.subcase.case_type,
            delay_case_id=bool(self.subcase.repeat_context),
            autoset_owner_id=autoset_owner_id_for_advanced_action(action),
            has_case_sharing=self.form.get_app().case_sharing,
            case_id=case_id
        )
        self.subcase_block.add_update_block(self.subcase.case_properties)
Beispiel #9
0
 def case_sharing_requires_assertion(form):
     actions = form.actions.open_cases
     for action in actions:
         if autoset_owner_id_for_advanced_action(action):
             return True
     return False
Beispiel #10
0
 def case_sharing_requires_assertion(form):
     actions = form.actions.open_cases
     for action in actions:
         if autoset_owner_id_for_advanced_action(action):
             return True
     return False