Source code for django_tables2.export.views

from __future__ import unicode_literals

from .export import TableExport


[docs]class ExportMixin(object): ''' Support various export formats for the table data. `ExportMixin` looks for some attributes on the class to change it's behaviour: Attributes: export_trigger_param (str): is the name of the GET attribute used to trigger the export. It's value decides the export format, refer to `TableExport` for a list of available formats. excude_columns (iterable): column names excluded from the export. For example, one might want to exclude columns containing buttons from the export. Excluding columns from the export is also possible using the `exclude_from_export` argument to the `.Column` constructor:: class Table(tables.Table): name = tables.Column() buttons = tables.TemplateColumn(exclude_from_export=True, template_name=...) ''' export_trigger_param = '_export' exclude_columns = () def get_export_filename(self, export_format): return 'table.{}'.format(export_format) def create_export(self, export_format): exporter = TableExport( export_format=export_format, table=self.get_table(**self.get_table_kwargs()), exclude_columns=self.exclude_columns ) return exporter.response(filename=self.get_export_filename(export_format)) def render_to_response(self, context, **kwargs): export_format = self.request.GET.get(self.export_trigger_param, None) if TableExport.is_valid_format(export_format): return self.create_export(export_format) return super(ExportMixin, self).render_to_response(context, **kwargs)