def test_couch_action_equality(self): case_id = _post_util(create=True) _post_util(case_id=case_id, p1='p1', p2='p2') case = CommCareCase.get(case_id) self.assertEqual(3, len(case.actions)) # (1) create & (2) update date opened (3) update properties self.assertTrue(case.actions[0] != case.actions[1]) self.assertTrue(case.actions[1] == case.actions[1]) orig = case.actions[1] copy = CommCareCaseAction.wrap(orig._doc.copy()) self.assertTrue(copy != case.actions[0]) self.assertTrue(copy == orig) copy.server_date = copy.server_date + timedelta(seconds=1) self.assertTrue(copy != orig) copy.server_date = orig.server_date self.assertTrue(copy == orig) copy.updated_unknown_properties['p1'] = 'not-p1' self.assertTrue(copy != orig) copy.updated_unknown_properties['p1'] = 'p1' self.assertTrue(copy == orig) copy.updated_unknown_properties['pnew'] = '' self.assertTrue(copy != orig)
def test_couch_action_equality(self): case_id = _post_util(create=True) _post_util(case_id=case_id, p1='p1', p2='p2') case = CommCareCase.get(case_id) self.assertEqual(3, len(case.actions)) # (1) create & (2) update date opened (3) update properties self.assertTrue(case.actions[0] != case.actions[1]) self.assertTrue(case.actions[1] == case.actions[1]) orig = case.actions[2] copy = CommCareCaseAction.wrap(deepcopy(orig._doc)) self.assertTrue(copy != case.actions[0]) self.assertTrue(copy == orig) copy.server_date = copy.server_date + timedelta(seconds=1) self.assertTrue(copy != orig) copy.server_date = orig.server_date self.assertTrue(copy == orig) copy.updated_unknown_properties['p1'] = 'not-p1' self.assertTrue(copy != orig) copy.updated_unknown_properties['p1'] = 'p1' self.assertTrue(copy == orig) copy.updated_unknown_properties['pnew'] = '' self.assertTrue(copy != orig)
def testActionEquality(self): case_id = _post_util(create=True) _post_util(case_id=case_id, p1='p1', p2='p2') case = CommCareCase.get(case_id) self.assertEqual(2, len(case.actions)) # create + update self.assertTrue(case.actions[0] != case.actions[1]) self.assertTrue(case.actions[1] == case.actions[1]) orig = case.actions[1] copy = CommCareCaseAction.wrap(orig._doc.copy()) self.assertTrue(copy != case.actions[0]) self.assertTrue(copy == orig) copy.server_date = copy.server_date + timedelta(seconds=1) self.assertTrue(copy != orig) copy.server_date = orig.server_date self.assertTrue(copy == orig) copy.updated_unknown_properties['p1'] = 'not-p1' self.assertTrue(copy != orig) copy.updated_unknown_properties['p1'] = 'p1' self.assertTrue(copy == orig) copy.updated_unknown_properties['pnew'] = '' self.assertTrue(copy != orig)
def allocated_to(self): if self.status == "Closed": close_action = [CommCareCaseAction.wrap(a) for a in self.case['actions'] if a['action_type'] == const.CASE_ACTION_CLOSE][0] CATI_FOLLOW_UP_FORMS = ( "http://openrosa.org/formdesigner/A5B08D8F-139D-46C6-9FDF-B1AD176EAE1F", ) if close_action.xform.xmlns in CATI_FOLLOW_UP_FORMS: return 'CATI' else: return 'Field' else: follow_up_type = self.case.get('follow_up_type', '') house_number = self.case.get('phone_house_number', '') husband_number = self.case.get('phone_husband_number', '') mother_number = self.case.get('phone_mother_number', '') asha_number = self.case.get('phone_asha_number', '') if follow_up_type != 'field_follow_up' and (house_number or husband_number or mother_number or asha_number): return 'CATI' else: return 'Field'
def allocated_to(self): if self.status == "Closed": close_action = [ CommCareCaseAction.wrap(a) for a in self.case['actions'] if a['action_type'] == const.CASE_ACTION_CLOSE ][0] CATI_FOLLOW_UP_FORMS = ( "http://openrosa.org/formdesigner/A5B08D8F-139D-46C6-9FDF-B1AD176EAE1F", ) if close_action.xform.xmlns in CATI_FOLLOW_UP_FORMS: return 'CATI' else: return 'Field' else: follow_up_type = self.case.get('follow_up_type', '') house_number = self.case.get('phone_house_number', '') husband_number = self.case.get('phone_husband_number', '') mother_number = self.case.get('phone_mother_number', '') asha_number = self.case.get('phone_asha_number', '') if follow_up_type != 'field_follow_up' and (house_number or husband_number or mother_number or asha_number): return 'CATI' else: return 'Field'
def creating_user(self): creator_id = None for action in self.case['actions']: if action['action_type'] == 'create': action_doc = CommCareCaseAction.wrap(action) creator_id = action_doc.get_user_id() break if not creator_id: return None return self._user_meta(creator_id)
def creating_user(self): creator_id = None for action in self.case['actions']: if action['action_type'] == 'create': action_doc = CommCareCaseAction.wrap(action) creator_id = action_doc.get_user_id() break if not creator_id: return _("No data") return self._get_username(creator_id)
def _creating_user(self): try: creator_id = self.raw_data['opened_by'] except KeyError: creator_id = None if 'actions' in self.raw_data: for action in self.raw_data['actions']: if action['action_type'] == 'create': action_doc = CommCareCaseAction.wrap(action) creator_id = action_doc.get_user_id() break if not creator_id: return None return self._user_meta(creator_id)
def creating_user(self): try: creator_id = self.case['opened_by'] except KeyError: creator_id = None if 'actions' in self.case: for action in self.case['actions']: if action['action_type'] == 'create': action_doc = CommCareCaseAction.wrap(action) creator_id = action_doc.get_user_id() break if not creator_id: return None return self._user_meta(creator_id)
def prepare_case_json(planning_db): case_ids = planning_db.get_all_case_ids(valid_only=False) for case_json in iter_docs(CommCareCase.get_db(), case_ids): case = CommCareCase.wrap(case_json) if case.doc_type != "CommCareCase": assert case.doc_type == "CommCareCase-Deleted" continue # to normalize for any new fields added case_json = deepcopy(case.to_json()) actions = [CommCareCaseAction.wrap(action) for action in planning_db.get_actions_by_case(case.case_id)] rebuild_case_from_actions(case, actions) planning_db.update_case_json(case.case_id, case.to_json()) planning_db.add_diffs("case", case.case_id, json_diff(case_json, case.to_json())) return planning_db
def test_couch_action_not_equals(self): orig = CommCareCaseAction() copy = CommCareCaseAction.wrap(deepcopy(orig._doc)) self.assertTrue(orig == copy) self.assertFalse(orig != copy)
]) return prepare_case_json(planning_db) def prepare_case_json(planning_db): case_ids = planning_db.get_all_case_ids(valid_only=False) for case_json in iter_docs(CommCareCase.get_db(), case_ids): case = CommCareCase.wrap(case_json) if case.doc_type != 'CommCareCase': assert case.doc_type == 'CommCareCase-Deleted' continue # to normalize for any new fields added case_json = deepcopy(case.to_json()) actions = [ CommCareCaseAction.wrap(action) for action in planning_db.get_actions_by_case(case.case_id) ] rebuild_case_from_actions(case, actions) planning_db.update_case_json(case.case_id, case.to_json()) planning_db.add_diffs('case', case.case_id, json_diff(case_json, case.to_json())) return planning_db def is_datetime_string(string): if not isinstance(string, str): return False try: iso_string_to_datetime(string, strict=True)
def test_couch_action_not_equals(self): orig = CommCareCaseAction() copy = CommCareCaseAction.wrap(deepcopy(orig._doc)) self.assertTrue(orig == copy) self.assertFalse(orig != copy)