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))
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))
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)
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)
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