def test_get_display_data_history(self):
     column = DisplayConfig(expr='colour', has_history=True)
     data = {'colour': 'red'}
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'colour', 'name': 'colour', 'value': 'red', 'has_history': True}
     )
 def test_get_display_process_yesno(self):
     column = DisplayConfig(expr='big', process="yesno")
     data = {'big': True}
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'big', 'name': 'big', 'value': 'yes', 'has_history': False}
     )
 def test_get_display_data_format(self):
     column = DisplayConfig(expr='colour', format="<b>{}</b>")
     data = {'colour': 'red'}
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'colour', 'name': 'colour', 'value': '<b>red</b>', 'has_history': False}
     )
 def test_get_display_data_history(self):
     column = {'expr': 'colour', 'has_history': True}
     data = {'colour': 'red'}
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'colour', 'name': 'colour', 'value': 'red', 'has_history': True}
     )
 def test_get_display_data_no_name(self):
     column = DisplayConfig(expr='color')
     data = {
         'color': 'red'
     }
     self.assertEqual(get_display_data(data, column),
                      {'expr': 'color', 'name': 'color', 'value': 'red', 'has_history': False})
 def test_get_display_data_blank(self):
     column = DisplayConfig(expr='not_prop')
     data = {'prop': True}
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'not_prop', 'name': 'not prop', 'value': '---', 'has_history': False}
     )
Beispiel #7
0
 def test_get_display_data_info_url(self):
     column = {'expr': 'colour'}
     data = {'colour': 'red'}
     info_url = "/stuff/__placeholder__/other_stuff"
     self.assertEqual(
         get_display_data(data, column, info_url=info_url),
         {'expr': 'colour', 'name': 'colour', 'value': 'red', 'info_url': '/stuff/colour/other_stuff'}
     )
 def test_get_display_data_no_name(self):
     column = {
         'expr': 'color'
     }
     data = {
         'color': 'red'
     }
     self.assertEqual(get_display_data(data, column), {'expr': 'color', 'name': 'color', 'value': 'red'})
 def test_get_display_data_no_name(self):
     column = {
         'expr': 'color'
     }
     data = {
         'color': 'red'
     }
     self.assertEqual(get_display_data(data, column),
                      {'expr': 'color', 'name': 'color', 'value': 'red', 'has_history': False})
Beispiel #10
0
def render_case_hierarchy(case, options):
    # todo: what are these doing here?
    from corehq.apps.hqwebapp.templatetags.proptable_tags import get_display_data

    case = wrapped_case(case)
    get_case_url = options.get('get_case_url')
    timezone = options.get('timezone', pytz.utc)
    columns = options.get('columns') or case.related_cases_columns
    show_view_buttons = options.get('show_view_buttons', True)
    type_info = options.get('related_type_info', case.related_type_info)

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

    if case.indices:
        # has parent case(s)
        # todo: handle duplicates in ancestor path (bubbling up of parent-child
        # relationships)
        parent_cases = []
        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 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 + case_list

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

    return render_to_string("case/partials/case_hierarchy.html", {
        'current_case': case,
        'domain': case.domain,
        'case_list': case_list,
        'columns': columns,
        'num_columns': len(columns) + 1,
        'show_view_buttons': show_view_buttons,
    })
Beispiel #11
0
 def test_get_display_data_name(self):
     column = {
         'name': 'favorite color',
         'expr': 'color'
     }
     data = {
         'color': 'red'
     }
     self.assertEqual(get_display_data(data, column),
                      {'expr': 'color', 'name': 'favorite color', 'value': 'red', 'info_url': None})
 def test_get_display_data_name(self):
     column = {'name': 'favorite color', 'expr': 'color'}
     data = {'color': 'red'}
     self.assertEqual(
         get_display_data(data, column), {
             'expr': 'color',
             'name': 'favorite color',
             'value': 'red',
             'has_history': False
         })
 def test_get_display_data_function(self):
     get_color = lambda x: x['color']
     column = DisplayConfig(name='favorite color', expr=get_color)
     data = {
         'color': 'red'
     }
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'favorite color', 'name': 'favorite color', 'value': 'red', 'has_history': False}
     )
Beispiel #14
0
 def test_get_display_data_function(self):
     get_color = lambda x: x['color']
     column = {
         'name': 'favorite color',
         'expr': get_color,
     }
     data = {
         'color': 'red'
     }
     self.assertEqual(get_display_data(data, column),
                      {'expr': 'favorite color', 'name': 'favorite color', 'value': 'red', 'info_url': None})
 def test_get_display_process_timeago(self):
     column = DisplayConfig(expr='date', process="date", timeago=True)
     data = {'date': "2021-03-16T14:37:22Z"}
     expected_value = (
         "<time class='timeago' title='2021-03-16T14:37:22+00:00' datetime='2021-03-16T14:37:22+00:00'>"
         "Mar 16, 2021 14:37 UTC"
         "</time>"
     )
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'date', 'name': 'date', 'value': expected_value, 'has_history': False}
     )
Beispiel #16
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,
    }
 def test_get_display_process_phonetime(self):
     column = DisplayConfig(expr='date', process="date", is_phone_time=True)
     data = {'date': "2021-03-16T14:37:22Z"}
     expected_value = (
         "<time title='2021-03-16T16:37:22+02:00' datetime='2021-03-16T16:37:22+02:00'>"
         "Mar 16, 2021 16:37 SAST"
         "</time>"
     )
     self.assertEqual(
         get_display_data(data, column, timezone=pytz.timezone("Africa/Johannesburg")),
         {'expr': 'date', 'name': 'date', 'value': expected_value, 'has_history': False}
     )
 def test_get_display_data_function(self):
     get_color = lambda x: x['color']
     column = {
         'name': 'favorite color',
         'expr': get_color,
     }
     data = {
         'color': 'red'
     }
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'favorite color', 'name': 'favorite color', 'value': 'red', 'has_history': False}
     )
 def test_get_display_process_docinfo(self, get_doc_info_by_id):
     get_doc_info_by_id.return_value = DocInfo(
         display="Bob",
         type_display="Mobile Worker",
         link="https://www.commcarehq.org/i_am_bob",
         is_deleted=False,
     )
     column = DisplayConfig(expr='bob', process="doc_info")
     data = {'bob': True, 'domain': 'bobs_domain'}
     expected_value = 'Mobile Worker\n<a href="https://www.commcarehq.org/i_am_bob">Bob</a>\n'
     self.assertEqual(
         get_display_data(data, column),
         {'expr': 'bob', 'name': 'bob', 'value': expected_value, 'has_history': False}
     )
Beispiel #20
0
        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,
    }


def normalize_date(val):
    # Can't use isinstance since datetime is a subclass of date.
    if type(val) == datetime.date:
    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,
        'columns': columns,
        'num_columns': len(columns) + 1,
        'show_view_buttons': show_view_buttons,
    }


def normalize_date(val):
    # Can't use isinstance since datetime is a subclass of date.
    if type(val) == datetime.date:
        return datetime.datetime.combine(val, datetime.time.min)