diff --git a/aleksis/core/tables.py b/aleksis/core/tables.py index ccf9c61a6b6d90f63ac0a1c5b979bf6b704e8b23..54d3f3e5c75e4c5ac0dca4b8ccfe868f70b7efb2 100644 --- a/aleksis/core/tables.py +++ b/aleksis/core/tables.py @@ -1,8 +1,7 @@ -from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ import django_tables2 as tables -from django_tables2.utils import A, AttributeDict, computed_values +from django_tables2.utils import A class SchoolTermTable(tables.Table): @@ -92,45 +91,3 @@ class DashboardWidgetTable(tables.Table): def render_widget_name(self, value, record): return record._meta.verbose_name - - -class MaterializeCheckboxColumn(tables.CheckBoxColumn): - """Checkbox column with Materialize support.""" - - empty_values = () - - @property - def header(self): - """Render the header cell.""" - default = {"type": "checkbox"} - general = self.attrs.get("input") - specific = self.attrs.get("th__input") - attrs = AttributeDict(default, **(specific or general or {})) - return mark_safe("<label><input %s/><span></span></label>" % attrs.as_html()) # noqa - - def render(self, value, bound_column, record): - """Render a data cell.""" - default = {"type": "checkbox", "name": bound_column.name, "value": value} - if self.is_checked(value, record): - default.update({"checked": "checked"}) - - general = self.attrs.get("input") - specific = self.attrs.get("td__input") - - attrs = dict(default, **(specific or general or {})) - attrs = computed_values(attrs, kwargs={"record": record, "value": value}) - return mark_safe( # noqa - "<label><input %s/><span></span</label>" % AttributeDict(attrs).as_html() - ) - - -class SelectColumn(MaterializeCheckboxColumn): - """Column with a check box prepared for `ActionForm` forms.""" - - def __init__(self, *args, **kwargs): - kwargs["attrs"] = { - "td__input": {"name": "selected_objects"}, - "th__input": {"id": "header_box"}, - } - kwargs.setdefault("accessor", A("pk")) - super().__init__(*args, **kwargs) diff --git a/aleksis/core/util/tables.py b/aleksis/core/util/tables.py new file mode 100644 index 0000000000000000000000000000000000000000..50a27a52bc4e5025375ee6189506efce7e151e7d --- /dev/null +++ b/aleksis/core/util/tables.py @@ -0,0 +1,46 @@ +from django.utils.safestring import mark_safe + +from django_tables2 import CheckBoxColumn +from django_tables2.utils import A, AttributeDict, computed_values + + +class MaterializeCheckboxColumn(CheckBoxColumn): + """Checkbox column with Materialize support.""" + + empty_values = () + + @property + def header(self): + """Render the header cell.""" + default = {"type": "checkbox"} + general = self.attrs.get("input") + specific = self.attrs.get("th__input") + attrs = AttributeDict(default, **(specific or general or {})) + return mark_safe("<label><input %s/><span></span></label>" % attrs.as_html()) # noqa + + def render(self, value, bound_column, record): + """Render a data cell.""" + default = {"type": "checkbox", "name": bound_column.name, "value": value} + if self.is_checked(value, record): + default.update({"checked": "checked"}) + + general = self.attrs.get("input") + specific = self.attrs.get("td__input") + + attrs = dict(default, **(specific or general or {})) + attrs = computed_values(attrs, kwargs={"record": record, "value": value}) + return mark_safe( # noqa + "<label><input %s/><span></span</label>" % AttributeDict(attrs).as_html() + ) + + +class SelectColumn(MaterializeCheckboxColumn): + """Column with a check box prepared for `ActionForm` forms.""" + + def __init__(self, *args, **kwargs): + kwargs["attrs"] = { + "td__input": {"name": "selected_objects"}, + "th__input": {"id": "header_box"}, + } + kwargs.setdefault("accessor", A("pk")) + super().__init__(*args, **kwargs)