# Copyright (C) 2020 by Animath
# SPDX-License-Identifier: GPL-3.0-or-later
from django.utils import formats
from django.utils.text import format_lazy
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables

from .models import Team, Tournament


# noinspection PyTypeChecker
class TeamTable(tables.Table):
    name = tables.LinkColumn(
        'participation:team_detail',
        args=[tables.A("id")],
        verbose_name=lambda: _("name").capitalize(),
    )

    class Meta:
        attrs = {
            'class': 'table table condensed table-striped',
        }
        model = Team
        fields = ('name', 'trigram',)
        template_name = 'django_tables2/bootstrap4.html'


# noinspection PyTypeChecker
class ParticipationTable(tables.Table):
    name = tables.LinkColumn(
        'participation:team_detail',
        args=[tables.A("team__id")],
        verbose_name=_("name").capitalize,
        accessor="team__name",
    )

    trigram = tables.Column(
        verbose_name=_("trigram").capitalize,
        accessor="team__trigram",
    )

    valid = tables.Column(
        verbose_name=_("valid").capitalize,
        accessor="valid",
        empty_values=(),
    )

    def render_valid(self, value):
        return _("Validated") if value else _("Validation pending") if value is False else _("Not validated")

    class Meta:
        attrs = {
            'class': 'table table condensed table-striped',
        }
        model = Team
        fields = ('name', 'trigram', 'valid',)
        template_name = 'django_tables2/bootstrap4.html'


class TournamentTable(tables.Table):
    name = tables.LinkColumn()

    date = tables.Column(_("date").capitalize, accessor="id")

    def render_date(self, record):
        return format_lazy(_("From {start} to {end}"),
                           start=formats.date_format(record.date_start, format="SHORT_DATE_FORMAT", use_l10n=True),
                           end=formats.date_format(record.date_end, format="SHORT_DATE_FORMAT", use_l10n=True))

    class Meta:
        attrs = {
            'class': 'table table condensed table-striped',
        }
        model = Tournament
        fields = ('name', 'date',)
        template_name = 'django_tables2/bootstrap4.html'