import django_tables2 as tables from django.utils.safestring import mark_safe class BaseTable(tables.Table): """ Default table for object lists """ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Set default empty_text if none was provided if self.empty_text is None: self.empty_text = 'No {} found'.format(self._meta.model._meta.verbose_name_plural) class Meta: attrs = { 'class': 'table table-hover table-headings', } class ToggleColumn(tables.CheckBoxColumn): """ Extend CheckBoxColumn to add a "toggle all" checkbox in the column header. """ def __init__(self, *args, **kwargs): default = kwargs.pop('default', '') visible = kwargs.pop('visible', False) if 'attrs' not in kwargs: kwargs['attrs'] = { 'td': { 'class': 'min-width' } } super().__init__(*args, default=default, visible=visible, **kwargs) @property def header(self): return mark_safe('') class BooleanColumn(tables.Column): """ Custom implementation of BooleanColumn to render a nicely-formatted checkmark or X icon instead of a Unicode character. """ def render(self, value): if value is True: rendered = '' elif value is False: rendered = '' else: rendered = '' return mark_safe(rendered) class ColorColumn(tables.Column): """ Display a color (#RRGGBB). """ def render(self, value): return mark_safe( ' '.format(value) )