70 lines
2.1 KiB
Python
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.")
|