2020-04-29 14:26:52 +00:00
|
|
|
import django_tables2 as tables
|
|
|
|
from django.utils.translation import gettext as _
|
2020-04-29 14:59:59 +00:00
|
|
|
from django_tables2 import A
|
2020-04-29 14:26:52 +00:00
|
|
|
|
2020-05-04 22:11:38 +00:00
|
|
|
from member.models import Solution, Synthesis
|
2020-05-05 02:45:38 +00:00
|
|
|
from .models import Tournament, Team, Pool
|
2020-04-29 14:26:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TournamentTable(tables.Table):
|
2020-04-29 14:59:59 +00:00
|
|
|
name = tables.LinkColumn(
|
|
|
|
"tournament:detail",
|
|
|
|
args=[A("pk")],
|
|
|
|
)
|
|
|
|
|
2020-04-29 14:26:52 +00:00
|
|
|
date_start = tables.Column(
|
|
|
|
verbose_name=_("dates").capitalize(),
|
|
|
|
)
|
|
|
|
|
|
|
|
def render_date_start(self, record):
|
|
|
|
return _("From {start:%b %d %Y} to {end:%b %d %Y}").format(start=record.date_start, end=record.date_end)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = Tournament
|
|
|
|
fields = ("name", "date_start", "date_inscription", "date_solutions", "size", )
|
|
|
|
attrs = {
|
|
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
|
|
}
|
2020-04-29 14:59:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TeamTable(tables.Table):
|
2020-04-29 15:58:11 +00:00
|
|
|
name = tables.LinkColumn(
|
|
|
|
"tournament:team_detail",
|
|
|
|
args=[A("pk")],
|
|
|
|
)
|
|
|
|
|
2020-04-29 14:59:59 +00:00
|
|
|
class Meta:
|
|
|
|
model = Team
|
|
|
|
fields = ("name", "trigram", "validation_status", )
|
|
|
|
attrs = {
|
|
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
|
|
}
|
2020-04-30 18:11:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
class SolutionTable(tables.Table):
|
2020-05-04 21:37:21 +00:00
|
|
|
team = tables.LinkColumn(
|
|
|
|
"tournament:team_detail",
|
|
|
|
args=[A("team.pk")],
|
|
|
|
)
|
|
|
|
|
|
|
|
tournament = tables.LinkColumn(
|
|
|
|
"tournament:detail",
|
2020-05-04 22:11:38 +00:00
|
|
|
args=[A("tournament.pk")],
|
|
|
|
accessor=A("tournament"),
|
2020-05-04 21:37:21 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
file = tables.LinkColumn(
|
|
|
|
"document",
|
|
|
|
args=[A("file")],
|
|
|
|
attrs={
|
|
|
|
"a": {
|
|
|
|
"data-turbolinks": "false",
|
|
|
|
}
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
def render_file(self):
|
|
|
|
return _("Download")
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = Solution
|
|
|
|
fields = ("team", "tournament", "problem", "uploaded_at", "file", )
|
|
|
|
attrs = {
|
|
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class SynthesisTable(tables.Table):
|
2020-05-04 22:11:38 +00:00
|
|
|
team = tables.LinkColumn(
|
|
|
|
"tournament:team_detail",
|
|
|
|
args=[A("team.pk")],
|
|
|
|
)
|
|
|
|
|
|
|
|
tournament = tables.LinkColumn(
|
|
|
|
"tournament:detail",
|
|
|
|
args=[A("tournament.pk")],
|
|
|
|
accessor=A("tournament"),
|
|
|
|
)
|
|
|
|
|
2020-04-30 18:11:03 +00:00
|
|
|
file = tables.LinkColumn(
|
|
|
|
"document",
|
|
|
|
args=[A("file")],
|
|
|
|
attrs={
|
|
|
|
"a": {
|
|
|
|
"data-turbolinks": "false",
|
|
|
|
}
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
def render_file(self):
|
|
|
|
return _("Download")
|
|
|
|
|
|
|
|
class Meta:
|
2020-05-04 22:11:38 +00:00
|
|
|
model = Synthesis
|
|
|
|
fields = ("team", "tournament", "round", "source", "uploaded_at", "file", )
|
2020-04-30 18:11:03 +00:00
|
|
|
attrs = {
|
|
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
|
|
}
|
2020-05-05 02:45:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
class PoolTable(tables.Table):
|
|
|
|
def render_teams(self, value):
|
|
|
|
return ", ".join(team.trigram for team in value.all())
|
|
|
|
|
|
|
|
def render_problems(self, value):
|
|
|
|
return ", ".join([str(pb) for pb in value])
|
|
|
|
|
|
|
|
def render_juries(self, value):
|
|
|
|
return ", ".join(str(jury) for jury in value.all())
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = Pool
|
|
|
|
fields = ("teams", "problems", "round", "juries", )
|
|
|
|
attrs = {
|
|
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
|
|
}
|