def _get_select_details(config): return models.Detail(custom_xml=Detail( id=_get_select_detail_id(config), title=Text(locale=Locale(id=id_strings.report_menu()), ), fields=[ Field( header=Header(text=Text(locale=Locale( id=id_strings.report_name_header()), )), template=Template(text=Text(locale=Locale( id=id_strings.report_name(config.uuid)))), ) ]).serialize().decode('utf-8'))
def _get_select_details(config): return models.Detail( custom_xml=Detail( id="reports.{}.select".format(config.uuid), title=Text(locale=Locale(id=id_strings.report_menu())), fields=[ Field( header=Header(text=Text(locale=Locale(id=id_strings.report_name_header()))), template=Template(text=Text(locale=Locale(id=id_strings.report_name(config.uuid)))), ) ], ).serialize() )
def _get_select_details(config): return models.Detail(custom_xml=Detail( id=_get_select_detail_id(config), title=Text( locale=Locale(id=id_strings.report_menu()), ), fields=[ Field( header=Header( text=Text( locale=Locale(id=id_strings.report_name_header()), ) ), template=Template( text=Text( locale=Locale(id=id_strings.report_name(config.uuid)) ) ), ) ] ).serialize().decode('utf-8'))
def _create_custom_app_strings(app, lang, for_default=False): def trans(d): return clean_trans(d, langs) def maybe_add_index(text): if app.build_version >= '2.8': numeric_nav_on = app.profile.get( 'properties', {}).get('cc-entry-mode') == 'cc-entry-review' if app.profile.get('features', {}).get('sense') == 'true' or numeric_nav_on: text = "${0} %s" % (text, ) if not ( text and text[0].isdigit()) else text return text langs = [lang] + app.langs yield id_strings.homescreen_title(), app.name yield id_strings.app_display_name(), app.name yield 'cchq.case', "Case" yield 'cchq.referral', "Referral" if for_default: # include language code names and current language for lc in app.langs: name = langcodes.get_name(lc) or lc if not name: continue with localize(convert_to_two_letter_code(lc)): name = ugettext(name) yield lc, name yield id_strings.current_language(), lang for module in app.get_modules(): for detail_type, detail, _ in module.get_details(): for column in detail.get_columns(): yield id_strings.detail_column_header_locale( module, detail_type, column), trans(column.header) if column.format in ('enum', 'enum-image', 'conditional-enum'): for item in column.enum: yield id_strings.detail_column_enum_variable( module, detail_type, column, item.key_as_variable), trans(item.value) elif column.format == "graph": for index, item in enumerate( column.graph_configuration.annotations): yield id_strings.graph_annotation( module, detail_type, column, index), trans(item.values) for property, values in column.graph_configuration.locale_specific_config.iteritems( ): yield id_strings.graph_configuration( module, detail_type, column, property), trans(values) for index, item in enumerate( column.graph_configuration.series): for property, values in item.locale_specific_config.iteritems( ): yield id_strings.graph_series_configuration( module, detail_type, column, index, property), trans(values) # To list app strings for properties used as sorting properties only if detail.sort_elements: sort_only, sort_columns = get_sort_and_sort_only_columns( detail, detail.sort_elements) for field, sort_element, order in sort_only: if sort_element.has_display_values(): column = create_temp_sort_column(sort_element, order) yield id_strings.detail_column_header_locale(module, detail_type, column), \ trans(column.header) for tab in detail.get_tabs(): yield id_strings.detail_tab_title_locale( module, detail_type, tab), trans(tab.header) if getattr(detail, 'lookup_display_results'): yield id_strings.callout_header_locale(module), trans( detail.lookup_field_header) yield id_strings.module_locale(module), maybe_add_index( trans(module.name)) icon = module.icon_app_string(lang, for_default=for_default) audio = module.audio_app_string(lang, for_default=for_default) custom_icon_form, custom_icon_text = module.custom_icon_form_and_text_by_language( lang) if icon: yield id_strings.module_icon_locale(module), icon if audio: yield id_strings.module_audio_locale(module), audio if custom_icon_form and custom_icon_text: yield _get_custom_icon_app_locale_and_value(custom_icon_form, custom_icon_text, module=module) if hasattr(module, 'report_configs'): yield id_strings.report_menu(), 'Reports' yield id_strings.report_name_header(), 'Report Name' yield id_strings.report_description_header(), 'Report Description' yield id_strings.report_last_sync(), 'Last Sync' yield id_strings.report_data_table(), 'Data Table' for config in module.report_configs: yield id_strings.report_command(config.uuid), trans( config.header) yield id_strings.report_name(config.uuid), trans(config.header) yield id_strings.report_description(config.uuid), trans( config.localized_description) for column in config.report(app.domain).report_columns: yield (id_strings.report_column_header( config.uuid, column.column_id), column.get_header(lang)) for chart_id, graph_config in config.complete_graph_configs.iteritems( ): for index, item in enumerate(graph_config.annotations): yield id_strings.mobile_ucr_annotation( module, config.uuid, index), trans(item.values) for property, values in graph_config.locale_specific_config.iteritems( ): yield id_strings.mobile_ucr_configuration( module, config.uuid, property), trans(values) for index, item in enumerate(graph_config.series): for property, values in item.locale_specific_config.iteritems( ): yield id_strings.mobile_ucr_series_configuration( module, config.uuid, index, property), trans(values) if hasattr(module, 'case_list'): if module.case_list.show: yield id_strings.case_list_locale(module), trans( module.case_list.label) or "Case List" icon = module.case_list.icon_app_string( lang, for_default=for_default) audio = module.case_list.audio_app_string( lang, for_default=for_default) if icon: yield id_strings.case_list_icon_locale(module), icon if audio: yield id_strings.case_list_audio_locale(module), audio if module_offers_search(module): yield id_strings.case_search_locale(module), trans( module.search_config.command_label) # icon and audio not yet available for prop in module.search_config.properties: yield id_strings.search_property_locale( module, prop.name), trans(prop.label) if hasattr(module, 'referral_list'): if module.referral_list.show: yield id_strings.referral_list_locale(module), trans( module.referral_list.label) for form in module.get_forms(): form_name = trans(form.name) + ('${0}' if form.show_count else '') yield id_strings.form_locale(form), maybe_add_index(form_name) icon = form.icon_app_string(lang, for_default=for_default) audio = form.audio_app_string(lang, for_default=for_default) custom_icon_form, custom_icon_text = form.custom_icon_form_and_text_by_language( lang) if icon: yield id_strings.form_icon_locale(form), icon if audio: yield id_strings.form_audio_locale(form), audio if custom_icon_form and custom_icon_text: yield _get_custom_icon_app_locale_and_value(custom_icon_form, custom_icon_text, form=form) if hasattr(module, 'case_list_form') and module.case_list_form.form_id: yield (id_strings.case_list_form_locale(module), trans(module.case_list_form.label) or "Create a new Case") icon = module.case_list_form.icon_app_string( lang, for_default=for_default) audio = module.case_list_form.audio_app_string( lang, for_default=for_default) if icon: yield id_strings.case_list_form_icon_locale(module), icon if audio: yield id_strings.case_list_form_audio_locale(module), audio
def _create_custom_app_strings(app, lang, for_default=False): def trans(d): return clean_trans(d, langs) def maybe_add_index(text): if app.build_version >= '2.8': numeric_nav_on = app.profile.get('properties', {}).get('cc-entry-mode') == 'cc-entry-review' if app.profile.get('features', {}).get('sense') == 'true' or numeric_nav_on: text = "${0} %s" % (text,) if not (text and text[0].isdigit()) else text return text langs = [lang] + app.langs yield id_strings.homescreen_title(), app.name yield id_strings.app_display_name(), app.name yield 'cchq.case', "Case" yield 'cchq.referral', "Referral" # include language code names and current language for lc in app.langs: name = langcodes.get_name(lc) or lc if name: yield lc, name yield id_strings.current_language(), lang for module in app.get_modules(): for detail_type, detail, _ in module.get_details(): if detail_type.startswith('case'): label = trans(module.case_label) elif detail_type.startswith('referral'): label = trans(module.referral_label) elif detail_type in ('product_short', 'product_long'): label = '' else: label = None if label is not None: yield id_strings.detail_title_locale(module, detail_type), label for column in detail.get_columns(): if not is_sort_only_column(column): yield id_strings.detail_column_header_locale(module, detail_type, column), trans(column.header) if column.format in ('enum', 'enum-image'): for item in column.enum: yield id_strings.detail_column_enum_variable( module, detail_type, column, item.key_as_variable ), trans(item.value) elif column.format == "graph": for index, item in enumerate(column.graph_configuration.annotations): yield id_strings.graph_annotation(module, detail_type, column, index), trans(item.values) for property, values in column.graph_configuration.locale_specific_config.iteritems(): yield id_strings.graph_configuration(module, detail_type, column, property), trans(values) for index, item in enumerate(column.graph_configuration.series): for property, values in item.locale_specific_config.iteritems(): yield id_strings.graph_series_configuration( module, detail_type, column, index, property ), trans(values) for tab in detail.get_tabs(): yield id_strings.detail_tab_title_locale(module, detail_type, tab), trans(tab.header) yield id_strings.module_locale(module), maybe_add_index(trans(module.name)) icon = module.icon_app_string(lang, for_default=for_default) audio = module.audio_app_string(lang, for_default=for_default) if icon: yield id_strings.module_icon_locale(module), icon if audio: yield id_strings.module_audio_locale(module), audio if hasattr(module, 'report_configs'): yield id_strings.report_menu(), 'Reports' yield id_strings.report_name_header(), 'Report Name' yield id_strings.report_description_header(), 'Report Description' yield id_strings.report_last_sync(), 'Last Sync' yield id_strings.report_data_table(), 'Data Table' for config in module.report_configs: yield id_strings.report_command(config.uuid), trans(config.header) yield id_strings.report_name(config.uuid), trans(config.header) yield id_strings.report_description(config.uuid), trans(config.localized_description) for column in config.report.report_columns: yield ( id_strings.report_column_header(config.uuid, column.column_id), column.get_header(lang) ) if hasattr(module, 'case_list'): if module.case_list.show: yield id_strings.case_list_locale(module), trans(module.case_list.label) or "Case List" icon = module.case_list.icon_app_string(lang, for_default=for_default) audio = module.case_list.audio_app_string(lang, for_default=for_default) if icon: yield id_strings.case_list_icon_locale(module), icon if audio: yield id_strings.case_list_audio_locale(module), audio if hasattr(module, 'referral_list'): if module.referral_list.show: yield id_strings.referral_list_locale(module), trans(module.referral_list.label) for form in module.get_forms(): form_name = trans(form.name) + ('${0}' if form.show_count else '') yield id_strings.form_locale(form), maybe_add_index(form_name) icon = form.icon_app_string(lang, for_default=for_default) audio = form.audio_app_string(lang, for_default=for_default) if icon: yield id_strings.form_icon_locale(form), icon if audio: yield id_strings.form_audio_locale(form), audio if hasattr(module, 'case_list_form') and module.case_list_form.form_id: yield ( id_strings.case_list_form_locale(module), trans(module.case_list_form.label) or "Create a new Case" ) icon = module.case_list_form.icon_app_string(lang, for_default=for_default) audio = module.case_list_form.audio_app_string(lang, for_default=for_default) if icon: yield id_strings.case_list_form_icon_locale(module), icon if audio: yield id_strings.case_list_form_audio_locale(module), audio
def _get_summary_details(config, domain): def _get_graph_fields(): from corehq.apps.userreports.reports.specs import MultibarChartSpec # todo: make this less hard-coded for chart_config in config.report(domain).charts: if isinstance(chart_config, MultibarChartSpec): graph_config = config.graph_configs.get(chart_config.chart_id, ReportGraphConfig()) def _column_to_series(column): return Series( nodeset=( "instance('reports')/reports/report[@id='{}']/rows/row[@is_total_row='False']{}" .format( config.uuid, _MobileSelectFilterHelpers.get_data_filter_xpath(config, domain) ) ), x_function="column[@id='{}']".format(chart_config.x_axis_column), y_function="column[@id='{}']".format(column), configuration=ConfigurationGroup(configs=[ ConfigurationItem(id=key, xpath_function=value) for key, value in graph_config.series_configs.get(column, {}).items() ]) ) yield Field( header=Header(text=Text()), template=GraphTemplate( form='graph', graph=Graph( type=graph_config.graph_type, series=[_column_to_series(c.column_id) for c in chart_config.y_axis_columns], configuration=ConfigurationGroup(configs=[ ConfigurationItem(id=key, xpath_function=value) for key, value in graph_config.config.items() ]), ), ) ) def _get_description_text(report_config): if report_config.use_xpath_description: return Text( xpath=Xpath(function=config.xpath_description) ) else: return Text( locale=Locale(id=id_strings.report_description(report_config.uuid)) ) return models.Detail(custom_xml=Detail( id='reports.{}.summary'.format(config.uuid), title=Text( locale=Locale(id=id_strings.report_menu()), ), details=[ Detail( title=Text( locale=Locale(id=id_strings.report_menu()), ), fields=[ Field( header=Header( text=Text( locale=Locale(id=id_strings.report_name_header()) ) ), template=Template( text=Text( locale=Locale(id=id_strings.report_name(config.uuid)) ) ), ), Field( header=Header( text=Text( locale=Locale(id=id_strings.report_description_header()), ) ), template=Template( text=_get_description_text(config) ), ), ] + [ Field( header=Header( text=Text( locale=Locale(id=id_strings.report_last_sync()) ) ), template=Template( text=Text( xpath=Xpath( function="format-date(date(instance('reports')/reports/@last_sync), '%Y-%m-%d %H:%M')" ) ) ) ), ] + list(_get_graph_fields()), ), _get_data_detail(config, domain), ], ).serialize().decode('utf-8'))
def _get_summary_details(config, domain, module): def _get_graph_fields(): from corehq.apps.userreports.reports.specs import MultibarChartSpec from corehq.apps.app_manager.models import GraphConfiguration, GraphSeries def _locale_config(key): return id_strings.mobile_ucr_configuration(module, config.uuid, key) def _locale_series_config(index, key): return id_strings.mobile_ucr_series_configuration( module, config.uuid, index, key) def _locale_annotation(index): return id_strings.mobile_ucr_annotation(module, config.uuid, index) for chart_config in config.report(domain).charts: if isinstance(chart_config, MultibarChartSpec): graph_config = config.complete_graph_configs.get( chart_config.chart_id, GraphConfiguration(series=[ GraphSeries() for c in chart_config.y_axis_columns ], )) for index, column in enumerate(chart_config.y_axis_columns): graph_config.series[index].data_path = ( graph_config.series[index].data_path or get_data_path(config, domain)) graph_config.series[index].x_function = ( graph_config.series[index].x_function or COLUMN_XPATH_TEMPLATE.format( chart_config.x_axis_column)) graph_config.series[index].y_function = ( graph_config.series[index].y_function or COLUMN_XPATH_TEMPLATE.format(column.column_id)) yield Field(header=Header(text=Text()), template=GraphTemplate.build( 'graph', graph_config, locale_config=_locale_config, locale_series_config=_locale_series_config, locale_annotation=_locale_annotation)) def _get_description_text(report_config): if report_config.use_xpath_description: return Text(xpath=Xpath(function=config.xpath_description)) else: return Text(locale=Locale( id=id_strings.report_description(report_config.uuid))) detail_id = 'reports.{}.summary'.format(config.uuid) detail = Detail( title=Text(locale=Locale(id=id_strings.report_menu()), ), fields=[ Field( header=Header(text=Text(locale=Locale( id=id_strings.report_name_header()))), template=Template(text=Text(locale=Locale( id=id_strings.report_name(config.uuid)))), ), Field( header=Header(text=Text(locale=Locale( id=id_strings.report_description_header()), )), template=Template(text=_get_description_text(config)), ), ] + [ Field( header=Header(text=Text(locale=Locale( id=id_strings.report_last_sync()))), template=Template(text=Text(xpath=Xpath( function= "format-date(date(instance('reports')/reports/@last_sync), '%Y-%m-%d %H:%M')" )))), ] + list(_get_graph_fields()), ) if config.show_data_table: return models.Detail(custom_xml=Detail( id=detail_id, title=Text(locale=Locale(id=id_strings.report_menu()), ), details=[detail, _get_data_detail(config, domain) ]).serialize().decode('utf-8')) else: detail.id = detail_id return models.Detail(custom_xml=detail.serialize().decode('utf-8'))
def _get_summary_details(config, domain, module, new_mobile_ucr_restore=False): def _get_graph_fields(): from corehq.apps.userreports.reports.specs import MultibarChartSpec from corehq.apps.app_manager.models import GraphConfiguration, GraphSeries def _locale_config(key): return id_strings.mobile_ucr_configuration( module, config.uuid, key ) def _locale_series_config(index, key): return id_strings.mobile_ucr_series_configuration( module, config.uuid, index, key ) def _locale_annotation(index): return id_strings.mobile_ucr_annotation( module, config.uuid, index ) for chart_config in config.report(domain).charts: if isinstance(chart_config, MultibarChartSpec): graph_config = config.complete_graph_configs.get(chart_config.chart_id, GraphConfiguration( series=[GraphSeries() for c in chart_config.y_axis_columns], )) # Reconcile graph_config.series with any additions/deletions in chart_config.y_axis_columns while len(chart_config.y_axis_columns) > len(graph_config.series): graph_config.series.append(GraphSeries()) if len(chart_config.y_axis_columns) < len(graph_config.series): graph_config.series = graph_config.series[:len(chart_config.y_axis_columns)] for index, column in enumerate(chart_config.y_axis_columns): graph_config.series[index].data_path = ( graph_config.series[index].data_path or get_data_path(config, domain, new_mobile_ucr_restore) ) graph_config.series[index].x_function = ( graph_config.series[index].x_function or _get_column_xpath_template(new_mobile_ucr_restore).format(chart_config.x_axis_column) ) graph_config.series[index].y_function = ( graph_config.series[index].y_function or _get_column_xpath_template(new_mobile_ucr_restore).format(column.column_id) ) yield Field( header=Header(text=Text()), template=GraphTemplate.build('graph', graph_config, locale_config=_locale_config, locale_series_config=_locale_series_config, locale_annotation=_locale_annotation) ) def _get_last_sync(report_config): if new_mobile_ucr_restore: last_sync_string = "format-date(date(instance('commcare-reports:{}')/@last_sync), '%Y-%m-%d %H:%M')" last_sync_string = last_sync_string.format(report_config.instance_id) else: last_sync_string = "format-date(date(instance('reports')/reports/@last_sync), '%Y-%m-%d %H:%M')" return Text( xpath=Xpath( function=last_sync_string ) ) def _get_description_text(report_config): if report_config.use_xpath_description: return Text( xpath=Xpath(function=config.xpath_description) ) else: return Text( locale=Locale(id=id_strings.report_description(report_config.uuid)) ) detail_id = 'reports.{}.summary'.format(config.uuid) detail = Detail( title=Text( locale=Locale(id=id_strings.report_menu()), ), fields=[ Field( header=Header( text=Text( locale=Locale(id=id_strings.report_name_header()) ) ), template=Template( text=Text( locale=Locale(id=id_strings.report_name(config.uuid)) ) ), ), Field( header=Header( text=Text( locale=Locale(id=id_strings.report_description_header()), ) ), template=Template( text=_get_description_text(config) ), ), ] + [ Field( header=Header( text=Text( locale=Locale(id=id_strings.report_last_sync()) ) ), template=Template(text=_get_last_sync(config)) ), ] + list(_get_graph_fields()), ) if config.show_data_table: return models.Detail(custom_xml=Detail( id=detail_id, title=Text( locale=Locale(id=id_strings.report_menu()), ), details=[detail, _get_data_detail(config, domain, new_mobile_ucr_restore)] ).serialize().decode('utf-8')) else: detail.id = detail_id return models.Detail(custom_xml=detail.serialize().decode('utf-8'))
def _get_summary_details(config, domain): def _get_graph_fields(): from corehq.apps.userreports.reports.specs import MultibarChartSpec # todo: make this less hard-coded for chart_config in config.report(domain).charts: if isinstance(chart_config, MultibarChartSpec): graph_config = config.graph_configs.get( chart_config.chart_id, ReportGraphConfig()) def _column_to_series(column): return Series(nodeset=( "instance('reports')/reports/report[@id='{}']/rows/row[@is_total_row='False']{}" .format( config.uuid, _MobileSelectFilterHelpers.get_data_filter_xpath( config, domain))), x_function="column[@id='{}']".format( chart_config.x_axis_column), y_function="column[@id='{}']".format(column), configuration=ConfigurationGroup(configs=[ ConfigurationItem(id=key, xpath_function=value) for key, value in graph_config. series_configs.get(column, {}).items() ])) yield Field( header=Header(text=Text()), template=GraphTemplate( form='graph', graph=Graph( type=graph_config.graph_type, series=[ _column_to_series(c.column_id) for c in chart_config.y_axis_columns ], configuration=ConfigurationGroup(configs=[ ConfigurationItem(id=key, xpath_function=value) for key, value in graph_config.config.items() ]), ), )) def _get_description_text(report_config): if report_config.use_xpath_description: return Text(xpath=Xpath(function=config.xpath_description)) else: return Text(locale=Locale( id=id_strings.report_description(report_config.uuid))) return models.Detail(custom_xml=Detail( id='reports.{}.summary'.format(config.uuid), title=Text(locale=Locale(id=id_strings.report_menu()), ), details=[ Detail( title=Text(locale=Locale(id=id_strings.report_menu()), ), fields=[ Field( header=Header(text=Text(locale=Locale( id=id_strings.report_name_header()))), template=Template(text=Text(locale=Locale( id=id_strings.report_name(config.uuid)))), ), Field( header=Header(text=Text(locale=Locale( id=id_strings.report_description_header()), )), template=Template(text=_get_description_text(config)), ), ] + [ Field( header=Header(text=Text(locale=Locale(id=id_strings. report_last_sync( )))), template=Template(text=Text(xpath=Xpath( function= "format-date(date(instance('reports')/reports/@last_sync), '%Y-%m-%d %H:%M')" )))), ] + list(_get_graph_fields()), ), _get_data_detail(config, domain), ], ).serialize().decode('utf-8'))
def _get_summary_details(config, domain, module, new_mobile_ucr_restore=False): def _get_graph_fields(): from corehq.apps.userreports.reports.specs import MultibarChartSpec from corehq.apps.app_manager.models import GraphConfiguration, GraphSeries def _locale_config(key): return id_strings.mobile_ucr_configuration(module, config.uuid, key) def _locale_series_config(index, key): return id_strings.mobile_ucr_series_configuration( module, config.uuid, index, key) def _locale_annotation(index): return id_strings.mobile_ucr_annotation(module, config.uuid, index) for chart_config in config.report(domain).charts: if isinstance(chart_config, MultibarChartSpec): graph_config = config.complete_graph_configs.get( chart_config.chart_id, GraphConfiguration(series=[ GraphSeries() for c in chart_config.y_axis_columns ], )) # Reconcile graph_config.series with any additions/deletions in chart_config.y_axis_columns while len(chart_config.y_axis_columns) > len( graph_config.series): graph_config.series.append(GraphSeries()) if len(chart_config.y_axis_columns) < len(graph_config.series): graph_config.series = graph_config.series[:len( chart_config.y_axis_columns)] for index, column in enumerate(chart_config.y_axis_columns): graph_config.series[index].data_path = ( graph_config.series[index].data_path or get_data_path( config, domain, new_mobile_ucr_restore)) graph_config.series[index].x_function = ( graph_config.series[index].x_function or _get_column_xpath_template(new_mobile_ucr_restore). format(chart_config.x_axis_column)) graph_config.series[index].y_function = ( graph_config.series[index].y_function or _get_column_xpath_template( new_mobile_ucr_restore).format(column.column_id)) yield Field(header=Header(text=Text()), template=GraphTemplate.build( 'graph', graph_config, locale_config=_locale_config, locale_series_config=_locale_series_config, locale_annotation=_locale_annotation)) def _get_last_sync(report_config): if new_mobile_ucr_restore: last_sync_string = "format-date(date(instance('commcare-reports:{}')/@last_sync), '%Y-%m-%d %H:%M')" last_sync_string = last_sync_string.format( report_config.instance_id) else: last_sync_string = "format-date(date(instance('reports')/reports/@last_sync), '%Y-%m-%d %H:%M')" return Text(xpath=TextXPath(function=last_sync_string)) def _get_description_text(report_config): if report_config.use_xpath_description: return Text(xpath=TextXPath(function=config.xpath_description)) else: return Text(locale=Locale( id=id_strings.report_description(report_config.uuid))) detail_id = 'reports.{}.summary'.format(config.uuid) fields = [ Field( header=Header(text=Text(locale=Locale( id=id_strings.report_name_header()))), template=Template(text=Text(locale=Locale( id=id_strings.report_name(config.uuid)))), ), Field( header=Header(text=Text(locale=Locale( id=id_strings.report_description_header()), )), template=Template(text=_get_description_text(config)), ), ] if not getattr(module, 'report_context_tile', False): # Don't add "Last Sync" if the module already contains the similar-looking # "Reports last updated on" tile fields.append( Field(header=Header(text=Text(locale=Locale( id=id_strings.report_last_sync()))), template=Template(text=_get_last_sync(config)))) fields += list(_get_graph_fields()) detail = Detail( title=Text(locale=Locale(id=id_strings.report_menu()), ), fields=fields, ) if config.show_data_table: return models.Detail(custom_xml=Detail( id=detail_id, title=Text(locale=Locale(id=id_strings.report_menu()), ), details=[ detail, _get_data_detail(config, domain, new_mobile_ucr_restore) ]).serialize().decode('utf-8')) else: detail.id = detail_id return models.Detail(custom_xml=detail.serialize().decode('utf-8'))
def _create_custom_app_strings(app, lang): def trans(d): return clean_trans(d, langs) def maybe_add_index(text): if app.build_version >= '2.8': numeric_nav_on = app.profile.get('properties', {}).get('cc-entry-mode') == 'cc-entry-review' if app.profile.get('features', {}).get('sense') == 'true' or numeric_nav_on: text = "${0} %s" % (text,) if not (text and text[0].isdigit()) else text return text langs = [lang] + app.langs yield id_strings.homescreen_title(), app.name yield id_strings.app_display_name(), app.name yield 'cchq.case', "Case" yield 'cchq.referral', "Referral" # include language code names for lc in app.langs: name = langcodes.get_name(lc) or lc if name: yield lc, name for module in app.get_modules(): for detail_type, detail, _ in module.get_details(): if detail_type.startswith('case'): label = trans(module.case_label) elif detail_type.startswith('referral'): label = trans(module.referral_label) elif detail_type in ('product_short', 'product_long'): label = '' else: label = None if label is not None: yield id_strings.detail_title_locale(module, detail_type), label for column in detail.get_columns(): if not is_sort_only_column(column): yield id_strings.detail_column_header_locale(module, detail_type, column), trans(column.header) if column.format in ('enum', 'enum-image'): for item in column.enum: yield id_strings.detail_column_enum_variable(module, detail_type, column, item.key_as_variable), trans(item.value) elif column.format == "graph": for index, item in enumerate(column.graph_configuration.annotations): yield id_strings.graph_annotation(module, detail_type, column, index), trans(item.values) for property, values in column.graph_configuration.locale_specific_config.iteritems(): yield id_strings.graph_configuration(module, detail_type, column, property), trans(values) for tab in detail.get_tabs(): yield id_strings.detail_tab_title_locale(module, detail_type, tab), trans(tab.header) yield id_strings.module_locale(module), maybe_add_index(trans(module.name)) if hasattr(module, 'report_configs'): for config in module.report_configs: yield id_strings.report_command(config.report_id), trans(config.header) yield id_strings.report_name(config.report_id), config.report.title yield id_strings.report_menu(), 'Reports' yield id_strings.report_name_header(), 'Report Name' yield id_strings.report_description_header(), 'Report Description' for column in config.report.report_columns: yield ( id_strings.report_column_header(config.report_id, column.column_id), column.get_header(lang) ) if hasattr(module, 'case_list'): if module.case_list.show: yield id_strings.case_list_locale(module), trans(module.case_list.label) or "Case List" if hasattr(module, 'referral_list'): if module.referral_list.show: yield id_strings.referral_list_locale(module), trans(module.referral_list.label) for form in module.get_forms(): form_name = trans(form.name) + ('${0}' if form.show_count else '') yield id_strings.form_locale(form), maybe_add_index(form_name) if hasattr(module, 'case_list_form') and module.case_list_form.form_id: yield ( id_strings.case_list_form_locale(module), trans(module.case_list_form.label) or "Create a new Case" )