mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-19 15:41:31 +02:00
105 lines
3.0 KiB
Python
105 lines
3.0 KiB
Python
# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import django_tables2 as tables
|
|
from django.urls import reverse
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django_tables2 import A
|
|
|
|
from .models import Family, Challenge, FamilyMembership, Achievement
|
|
|
|
|
|
class FamilyTable(tables.Table):
|
|
"""
|
|
List all families
|
|
"""
|
|
class Meta:
|
|
attrs = {
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
}
|
|
model = Family
|
|
template_name = 'django_tables2/bootstrap4.html'
|
|
fields = ('name', 'score', 'rank',)
|
|
order_by = ('rank',)
|
|
row_attrs = {
|
|
'class': 'table-row',
|
|
'data-href': lambda record: reverse('family:family_detail', args=[record.pk]),
|
|
'style': 'cursor:pointer',
|
|
}
|
|
|
|
|
|
class ChallengeTable(tables.Table):
|
|
"""
|
|
List all challenges
|
|
"""
|
|
class Meta:
|
|
attrs = {
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
}
|
|
order_by = ('id',)
|
|
model = Challenge
|
|
template_name = 'django_tables2/bootstrap4.html'
|
|
fields = ('name', 'description', 'points',)
|
|
row_attrs = {
|
|
'class': 'table-row',
|
|
'data-href': lambda record: reverse('family:challenge_detail', args=[record.pk]),
|
|
'style': 'cursor:pointer',
|
|
}
|
|
|
|
|
|
class FamilyMembershipTable(tables.Table):
|
|
"""
|
|
List all family memberships.
|
|
"""
|
|
class Meta:
|
|
attrs = {
|
|
'class': 'table table-condensed table-striped',
|
|
'style': 'table-layout: fixed;'
|
|
}
|
|
template_name = 'django_tables2/bootstrap4.html'
|
|
fields = ('user',)
|
|
model = FamilyMembership
|
|
|
|
|
|
class AchievementTable(tables.Table):
|
|
"""
|
|
List recent achievements.
|
|
"""
|
|
delete = tables.LinkColumn(
|
|
'family:achievement_delete',
|
|
args=[A('id')],
|
|
verbose_name=_("Delete"),
|
|
text=_("Delete"),
|
|
orderable=False,
|
|
attrs={
|
|
'th': {
|
|
'id': 'delete-membership-header'
|
|
},
|
|
'a': {
|
|
'class': 'btn btn-danger',
|
|
'data-type': 'delete-membership'
|
|
}
|
|
},
|
|
)
|
|
|
|
class Meta:
|
|
attrs = {
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
}
|
|
model = Achievement
|
|
fields = ('family', 'challenge', 'challenge__points', 'obtained_at', )
|
|
template_name = 'django_tables2/bootstrap4.html'
|
|
order_by = ('-obtained_at',)
|
|
|
|
class FamilyAchievementTable(tables.Table):
|
|
"""
|
|
Table des défis réalisés par une famille spécifique.
|
|
"""
|
|
class Meta:
|
|
model = Achievement
|
|
template_name = 'django_tables2/bootstrap4.html'
|
|
fields = ('challenge', 'challenge__points', 'obtained_at',)
|
|
attrs = {
|
|
'class': 'table table-condensed table-striped table-hover'
|
|
}
|
|
order_by = ('-obtained_at',) |