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} )
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})
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, })
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} )
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} )
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} )
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)