Esempio n. 1
0
def case_hierarchy_context(case, get_case_url, show_view_buttons=True, timezone=None):
    wrapped_case = get_wrapped_case(case)
    if timezone is None:
        timezone = pytz.utc
    columns = wrapped_case.related_cases_columns
    type_info = wrapped_case.related_type_info

    descendent_case_list = get_flat_descendant_case_list(
        case, get_case_url, type_info=type_info
    )

    parent_cases = []
    if case.indices:
        # has parent case(s)
        # todo: handle duplicates in ancestor path (bubbling up of parent-child
        # relationships)
        for idx in case.indices:
            try:
                parent_cases.append(idx.referenced_case)
            except ResourceNotFound:
                parent_cases.append(None)
        for parent_case in parent_cases:
            if parent_case:
                parent_case.edit_data = {
                    'view_url': get_case_url(parent_case.case_id)
                }
                last_parent_id = parent_case.case_id
            else:
                last_parent_id = None

        for c in descendent_case_list:
            if not getattr(c, 'treetable_parent_node_id', None) and last_parent_id:
                c.treetable_parent_node_id = last_parent_id

    case_list = parent_cases + descendent_case_list

    for c in case_list:
        if not c:
            continue
        c.columns = []
        case_dict = get_wrapped_case(c).to_full_dict()
        for column in columns:
            c.columns.append(get_display_data(
                case_dict, column, timezone=timezone))

    return {
        'current_case': case,
        'domain': case.domain,
        'case_list': case_list,
        'columns': columns,
        'num_columns': len(columns) + 1,
        'show_view_buttons': show_view_buttons,
    }
Esempio n. 2
0
                           timezone=None):
    wrapped_case = get_wrapped_case(case)
    if timezone is None:
        timezone = pytz.utc
    columns = wrapped_case.related_cases_columns
    type_info = wrapped_case.related_type_info

    case_list = get_flat_descendant_case_list(case,
                                              get_case_url,
                                              type_info=type_info)

    for c in case_list:
        if not c:
            continue
        c.columns = []
        case_dict = get_wrapped_case(c).to_full_dict()
        for column in columns:
            c.columns.append(
                get_display_data(case_dict, column, timezone=timezone))

    return {
        'current_case': case,
        'domain': case.domain,
        'case_list': case_list,
        'max_child_cases': MAX_CHILD_CASES,
        'columns': columns,
        'num_columns': len(columns) + 1,
        'show_view_buttons': show_view_buttons,
    }