Example #1
0
    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
Example #2
0
    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