Source code for aleksis.core.tables
from textwrap import wrap
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables
from django_tables2.utils import A
from .models import Person
from .util.core_helpers import get_site_preferences
[docs]class SchoolTermTable(tables.Table):
"""Table to list persons."""
class Meta:
attrs = {"class": "highlight"}
name = tables.LinkColumn("edit_school_term", args=[A("id")])
date_start = tables.Column()
date_end = tables.Column()
edit = tables.LinkColumn(
"edit_school_term",
args=[A("id")],
text=_("Edit"),
attrs={"a": {"class": "btn-flat waves-effect waves-orange orange-text"}},
verbose_name=_("Actions"),
)
[docs]class PersonsTable(tables.Table):
"""Table to list persons."""
class Meta:
attrs = {"class": "highlight"}
first_name = tables.LinkColumn("person_by_id", args=[A("id")])
last_name = tables.LinkColumn("person_by_id", args=[A("id")])
[docs]class GroupsTable(tables.Table):
"""Table to list groups."""
class Meta:
attrs = {"class": "highlight"}
name = tables.LinkColumn("group_by_id", args=[A("id")])
short_name = tables.LinkColumn("group_by_id", args=[A("id")])
school_term = tables.Column()
[docs]class AdditionalFieldsTable(tables.Table):
"""Table to list group types."""
class Meta:
attrs = {"class": "hightlight"}
title = tables.LinkColumn("edit_additional_field_by_id", args=[A("id")])
delete = tables.LinkColumn(
"delete_additional_field_by_id",
args=[A("id")],
verbose_name=_("Delete"),
text=_("Delete"),
attrs={"a": {"class": "btn-flat waves-effect waves-red"}},
)
[docs]class GroupTypesTable(tables.Table):
"""Table to list group types."""
class Meta:
attrs = {"class": "highlight"}
name = tables.LinkColumn("edit_group_type_by_id", args=[A("id")])
description = tables.LinkColumn("edit_group_type_by_id", args=[A("id")])
delete = tables.LinkColumn(
"delete_group_type_by_id", args=[A("id")], verbose_name=_("Delete"), text=_("Delete")
)
[docs]class DashboardWidgetTable(tables.Table):
"""Table to list dashboard widgets."""
class Meta:
attrs = {"class": "highlight"}
widget_name = tables.Column(accessor="pk")
title = tables.LinkColumn("edit_dashboard_widget", args=[A("id")])
active = tables.BooleanColumn(yesno="check,cancel", attrs={"span": {"class": "material-icons"}})
delete = tables.LinkColumn(
"delete_dashboard_widget",
args=[A("id")],
text=_("Delete"),
attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}},
verbose_name=_("Actions"),
)
def render_widget_name(self, value, record):
return record._meta.verbose_name
[docs]class InvitationCodeColumn(tables.Column):
"""Returns invitation code in a more readable format."""
[docs] def render(self, value):
packet_size = get_site_preferences()["auth__invite_code_packet_size"]
return "-".join(wrap(value, packet_size))
[docs]class InvitationsTable(tables.Table):
"""Table to list persons."""
email = tables.EmailColumn()
sent = tables.DateColumn()
inviter_id = PersonColumn()
key = InvitationCodeColumn()
accepted = tables.BooleanColumn(
yesno="check,cancel", attrs={"span": {"class": "material-icons"}}
)
[docs]class PermissionDeleteColumn(tables.LinkColumn):
"""Link column with label 'Delete'."""
[docs] def __init__(self, url, **kwargs):
super().__init__(
url,
args=[A("pk")],
text=_("Delete"),
attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}},
verbose_name=_("Actions"),
**kwargs
)
[docs]class PermissionTable(tables.Table):
"""Table to list permissions."""
class Meta:
attrs = {"class": "responsive-table highlight"}
permission = tables.Column()
[docs]class ObjectPermissionTable(PermissionTable):
"""Table to list object permissions."""
content_object = tables.Column()
[docs]class GroupObjectPermissionTable(ObjectPermissionTable):
"""Table to list assigned group object permissions."""
group = tables.Column()
delete = PermissionDeleteColumn("delete_group_object_permission")
[docs]class UserObjectPermissionTable(ObjectPermissionTable):
"""Table to list assigned user object permissions."""
user = tables.Column()
delete = PermissionDeleteColumn("delete_user_object_permission")
[docs]class GroupGlobalPermissionTable(GlobalPermissionTable):
"""Table to list assigned global user permissions."""
group = tables.Column()
delete = PermissionDeleteColumn("delete_group_global_permission")
[docs]class UserGlobalPermissionTable(GlobalPermissionTable):
"""Table to list assigned global group permissions."""
user = tables.Column()
delete = PermissionDeleteColumn("delete_user_global_permission")