def _actual_owned_cases(self): """ This returns a list of case dicts. Each dict will either be an actual case dict or else a dict containing only these keys: '_id', 'type', 'indices'. These 'minimal cases' are created from CaseState objects from the previous SyncLog. """ def _case_domain_match(case): return not self.domain or self.domain == case.get('domain') case_ids = self._get_case_ids() if self.use_minimal_cases: # First we check to see if there is a case state available that we can use # rather than fetching the whole case. minimal_cases = [] cases_to_fetch = [] for case_id in case_ids: minimal_case = self.global_state.minimal_cases.get(case_id) if minimal_case: minimal_cases.append(minimal_case) else: cases_to_fetch.append(case_id) logger.debug( "%s cases found in previous SyncLog. %s still to fetch", len(minimal_cases), len(cases_to_fetch) ) if cases_to_fetch: cases = CommCareCase.bulk_get_lite(cases_to_fetch, wrap=False, chunksize=self.chunksize) minimal_cases.extend( case_doc for case_doc in cases if _case_domain_match(case_doc) ) return minimal_cases else: lite_cases = list(iter_lite_cases_json(case_ids, self.chunksize)) logger.debug("No previous SyncLog. Fetched %s cases", len(lite_cases)) return lite_cases
def bulk_get_lite(cls, ids, wrap=True, chunksize=100): from corehq.apps.hqcase.dbaccessors import iter_lite_cases_json wrapper = lambda doc: cls.get_wrap_class(doc).wrap(doc) if wrap else doc for lite_case_json in iter_lite_cases_json(ids, chunksize=chunksize): yield wrapper(lite_case_json)
def bulk_get_lite(cls, ids, wrap=True, chunksize=100): from corehq.apps.hqcase.dbaccessors import iter_lite_cases_json wrapper = lambda doc: cls.get_wrap_class(doc).wrap(doc ) if wrap else doc for lite_case_json in iter_lite_cases_json(ids, chunksize=chunksize): yield wrapper(lite_case_json)