nk20/apps/wei/tables.py

179 lines
4.6 KiB
Python
Raw Normal View History

2020-04-11 21:02:12 +00:00
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
import django_tables2 as tables
from django.urls import reverse_lazy
2020-04-12 02:29:44 +00:00
from django.utils.translation import gettext_lazy as _
from django_tables2 import A
2020-04-11 21:02:12 +00:00
2020-04-13 19:16:52 +00:00
from .models import WEIClub, WEIRegistration, Bus, BusTeam, WEIMembership
2020-04-11 21:02:12 +00:00
class WEITable(tables.Table):
"""
2020-04-12 02:29:44 +00:00
List all WEI.
2020-04-11 21:02:12 +00:00
"""
class Meta:
attrs = {
'class': 'table table-condensed table-striped table-hover'
}
model = WEIClub
template_name = 'django_tables2/bootstrap4.html'
fields = ('name', 'year', 'date_start', 'date_end',)
row_attrs = {
'class': 'table-row',
'id': lambda record: "row-" + str(record.pk),
2020-04-11 22:06:20 +00:00
'data-href': lambda record: reverse_lazy('wei:wei_detail', args=(record.pk,))
2020-04-11 21:02:12 +00:00
}
2020-04-12 02:29:44 +00:00
class WEIRegistrationTable(tables.Table):
"""
List all WEI registrations.
"""
user = tables.LinkColumn(
'member:user_detail',
args=[A('user.pk')],
)
edit = tables.LinkColumn(
2020-04-12 02:39:57 +00:00
'wei:wei_update_registration',
2020-04-12 02:29:44 +00:00
args=[A('pk')],
verbose_name=_("Edit"),
text=_("Edit"),
attrs={
'a': {
'class': 'btn btn-warning'
}
}
)
validate = tables.LinkColumn(
2020-04-14 01:41:26 +00:00
'wei:validate_registration',
2020-04-12 02:29:44 +00:00
args=[A('pk')],
verbose_name=_("Validate"),
text=_("Validate"),
attrs={
'a': {
'class': 'btn btn-success'
}
}
)
delete = tables.LinkColumn(
2020-04-20 23:06:54 +00:00
'wei:wei_delete_registration',
2020-04-12 02:29:44 +00:00
args=[A('pk')],
verbose_name=_("delete"),
text=_("Delete"),
attrs={
'a': {
'class': 'btn btn-danger'
}
},
)
class Meta:
attrs = {
'class': 'table table-condensed table-striped table-hover'
}
model = WEIRegistration
template_name = 'django_tables2/bootstrap4.html'
2020-04-21 15:49:06 +00:00
fields = ('user', 'user.first_name', 'user.last_name', 'first_year',)
2020-04-13 03:02:16 +00:00
row_attrs = {
'class': 'table-row',
'id': lambda record: "row-" + str(record.pk),
'data-href': lambda record: record.pk
}
2020-04-13 19:16:52 +00:00
class WEIMembershipTable(tables.Table):
2020-04-21 15:49:06 +00:00
user = tables.LinkColumn(
'wei:wei_update_registration',
args=[A('registration.pk')],
)
bus = tables.LinkColumn(
'wei:manage_bus',
args=[A('bus.pk')],
)
team = tables.LinkColumn(
'wei:manage_bus_team',
args=[A('bus.pk')],
)
2020-04-13 19:16:52 +00:00
class Meta:
attrs = {
'class': 'table table-condensed table-striped table-hover'
}
model = WEIMembership
template_name = 'django_tables2/bootstrap4.html'
2020-04-21 15:49:06 +00:00
fields = ('user', 'user.first_name', 'user.last_name', 'bus', 'team', )
2020-04-13 19:16:52 +00:00
row_attrs = {
'class': 'table-row',
'id': lambda record: "row-" + str(record.pk),
}
2020-04-13 03:02:16 +00:00
class BusTable(tables.Table):
2020-04-13 19:16:52 +00:00
name = tables.LinkColumn(
'wei:manage_bus',
args=[A('pk')],
)
teams = tables.Column(
accessor=A("teams"),
verbose_name=_("Teams"),
attrs={
"td": {
"class": "text-truncate",
}
}
)
def render_teams(self, value):
return ", ".join(team.name for team in value.all())
2020-04-13 03:02:16 +00:00
class Meta:
attrs = {
'class': 'table table-condensed table-striped table-hover'
}
model = Bus
template_name = 'django_tables2/bootstrap4.html'
2020-04-13 19:16:52 +00:00
fields = ('name', 'teams', )
2020-04-13 03:02:16 +00:00
row_attrs = {
'class': 'table-row',
'id': lambda record: "row-" + str(record.pk),
}
class BusTeamTable(tables.Table):
2020-04-13 19:16:52 +00:00
name = tables.LinkColumn(
'wei:manage_bus_team',
args=[A('pk')],
)
2020-04-13 03:02:16 +00:00
color = tables.Column(
attrs={
"td": {
2020-04-13 04:01:27 +00:00
"style": lambda record: "background-color: #{:06X}; color: #{:06X};"
.format(record.color, 0xFFFFFF - record.color, )
2020-04-13 03:02:16 +00:00
}
}
)
2020-04-13 04:01:27 +00:00
def render_color(self, value):
return "#{:06X}".format(value)
2020-04-13 03:02:16 +00:00
class Meta:
attrs = {
'class': 'table table-condensed table-striped table-hover'
}
model = BusTeam
template_name = 'django_tables2/bootstrap4.html'
2020-04-13 04:01:27 +00:00
fields = ('name', 'color',)
2020-04-12 02:29:44 +00:00
row_attrs = {
'class': 'table-row',
'id': lambda record: "row-" + str(record.pk),
2020-04-13 19:16:52 +00:00
'data-href': lambda record: reverse_lazy('wei:manage_bus_team', args=(record.pk, ))
2020-04-12 02:29:44 +00:00
}