def export_table(self): try: data = self.data_source data.set_filter_values(self.filter_values) data.set_order_by([(o['field'], o['order']) for o in self.spec.sort_expression]) except UserReportsError as e: return self.render_json_response({ 'error': e.message, }) raw_rows = list(data.get_data()) headers = [ column.header for column in self.data_source.inner_columns if column.data_tables_column.visible ] column_id_to_expanded_column_ids = get_expanded_columns( data.top_level_columns, data.config) column_ids = [] for column in self.spec.report_columns: if column.visible: column_ids.extend( column_id_to_expanded_column_ids.get( column.column_id, [column.column_id])) rows = [[raw_row[column_id] for column_id in column_ids] for raw_row in raw_rows] total_rows = [data.get_total_row()] if data.has_total_row else [] export_table = [[self.title, [headers] + rows + total_rows]] if INCLUDE_METADATA_IN_UCR_EXCEL_EXPORTS.enabled(self.domain): time_zone = get_timezone_for_domain(self.domain) export_table.append([ 'metadata', [ [_('Report Name'), self.title], [ _('Generated On'), datetime.now(time_zone).strftime('%Y-%m-%d %H:%M') ], ] + list(self._get_filter_values()) ]) return export_table
def get_table(self): """Generate a table of all rows of this report """ headers = [ column.header for column in self.data_source.inner_columns if column.data_tables_column.visible ] column_id_to_expanded_column_ids = get_expanded_columns( self.data_source.top_level_columns, self.data_source.config ) column_ids = [] for column in self.report_config.report_columns: if column.visible: column_ids.extend(column_id_to_expanded_column_ids.get(column.column_id, [column.column_id])) rows = [[raw_row[column_id] for column_id in column_ids] for raw_row in self.data_source.get_data()] total_rows = [self.data_source.get_total_row()] if self.data_source.has_total_row else [] export_table = [ [ self.title, [headers] + rows + total_rows ] ] if INCLUDE_METADATA_IN_UCR_EXCEL_EXPORTS.enabled(self.domain): time_zone = get_timezone_for_domain(self.domain) export_table.append([ 'metadata', [ [_('Report Name'), self.title], [_('Generated On'), datetime.now(time_zone).strftime('%Y-%m-%d %H:%M')], ] + list(self._get_filter_values()) ]) return export_table