예제 #1
0
    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
예제 #2
0
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
    )
예제 #3
0
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)
예제 #4
0
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
    )