plateforme-tfjm2/registration/tables.py

70 lines
2.1 KiB
Python

# Copyright (C) 2020 by Animath
# SPDX-License-Identifier: GPL-3.0-or-later
from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables
from participation.models import Team
from .models import Payment, Registration
class RegistrationTable(tables.Table):
"""
Table of all registrations.
"""
last_name = tables.LinkColumn(
'registration:user_detail',
args=[tables.A("user_id")],
verbose_name=lambda: _("last name").capitalize(),
accessor="user__last_name",
)
def order_type(self, queryset, desc):
return queryset.order_by(('-' if desc else '') + 'polymorphic_ctype'), True
class Meta:
attrs = {
'class': 'table table-condensed table-striped',
}
model = Registration
fields = ('last_name', 'user__first_name', 'user__email', 'type',)
order_by = ('type', 'last_name', 'first_name',)
class PaymentTable(tables.Table):
"""
Table of all payments.
"""
team_id = tables.Column(
verbose_name=_("team").capitalize,
)
update_payment = tables.LinkColumn(
'registration:update_payment',
accessor='id',
args=[tables.A("id")],
verbose_name=_("Update"),
orderable=False,
)
def render_team_id(self, value):
return Team.objects.get(id=value).trigram
def render_amount(self, value):
return f"{value}"
def render_update_payment(self, record):
return mark_safe(f"<button class='btn btn-secondary'><i class='fas fa-money-bill-wave'></i> {_('Update')}</button>")
class Meta:
attrs = {
'class': 'table table-condensed table-striped',
}
row_attrs = {
'class': lambda record: ('table-success' if record.valid else
'table-danger' if record.valid is False else 'table-warning'),
}
model = Payment
fields = ('registrations', 'team_id', 'type', 'amount', 'valid', 'update_payment',)
empty_text = _("No payment yet.")