def _owner_from_extension(self, item, context, case_id): if item['owner_id'] == UNOWNED_EXTENSION_OWNER_ID: accessor = CaseAccessors(context.root_doc['domain']) indices = {case_id} last_indices = set() loop_counter = 0 # only allow 10 iterations at most in case there are loops while indices != last_indices and loop_counter < 10: last_indices |= indices indices |= set(accessor.get_indexed_case_ids(indices)) loop_counter += 1 cases = accessor.get_cases(list(indices)) cases_with_owners = [ case for case in cases if case.owner_id and case.owner_id != UNOWNED_EXTENSION_OWNER_ID ] if len(cases_with_owners) != 0: # This shouldn't happen in this world, but will feasibly # occur depending on our migration path from parent/child -> # extension cases. Once a migration path is decided revisit # alerting in this case return cases_with_owners[0].owner_id household_cases = [ case for case in cases if case.type == 'household' ] assert len(household_cases) == 1
def _get_direct_dependencies(domain, cases): case_accessor = CaseAccessors(domain) extension_cases = set(case_accessor.get_extension_case_ids(cases)) indexed_cases = set(case_accessor.get_indexed_case_ids(cases)) return DirectDependencies( all=extension_cases | indexed_cases, indexed_cases=indexed_cases, extension_cases=extension_cases )
def _get_direct_dependencies(domain, case_ids): assert not isinstance(case_ids, basestring) case_accessor = CaseAccessors(domain) extension_cases = set(case_accessor.get_extension_case_ids(case_ids)) indexed_cases = set(case_accessor.get_indexed_case_ids(case_ids)) return DirectDependencies(all=extension_cases | indexed_cases, indexed_cases=indexed_cases, extension_cases=extension_cases)
def _get_direct_dependencies(domain, case_ids): assert not isinstance(case_ids, (six.text_type, bytes)) case_accessor = CaseAccessors(domain) extension_cases = set(case_accessor.get_extension_case_ids(case_ids)) indexed_cases = set(case_accessor.get_indexed_case_ids(case_ids)) return DirectDependencies( all=extension_cases | indexed_cases, indexed_cases=indexed_cases, extension_cases=extension_cases )