diff --git a/apps/family/tables.py b/apps/family/tables.py index 871dfd35..759de96d 100644 --- a/apps/family/tables.py +++ b/apps/family/tables.py @@ -90,3 +90,16 @@ class AchievementTable(tables.Table): 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',) \ No newline at end of file diff --git a/apps/family/templates/family/family_detail.html b/apps/family/templates/family/family_detail.html index a1db566f..dc38edda 100644 --- a/apps/family/templates/family/family_detail.html +++ b/apps/family/templates/family/family_detail.html @@ -13,4 +13,13 @@ SPDX-License-Identifier: GPL-3.0-or-later {% render_table member_list %} + +
+ +
+
+ {% trans "Completed challenges" %} +
+ {% render_table achievement_list %} +
{% endblock %} \ No newline at end of file diff --git a/apps/family/views.py b/apps/family/views.py index 6325c445..33108f32 100644 --- a/apps/family/views.py +++ b/apps/family/views.py @@ -16,7 +16,7 @@ from django.urls import reverse_lazy from member.views import PictureUpdateView from .models import Family, Challenge, FamilyMembership, User, Achievement -from .tables import FamilyTable, ChallengeTable, FamilyMembershipTable, AchievementTable +from .tables import FamilyTable, ChallengeTable, FamilyMembershipTable, AchievementTable, FamilyAchievementTable from .forms import ChallengeForm, FamilyMembershipForm, FamilyForm @@ -88,6 +88,12 @@ class FamilyDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): context["can_add_members"] = PermissionBackend()\ .has_perm(self.request.user, "family.add_membership", empty_membership) + # Défis réalisé par la famille + achievements = Achievement.objects.filter(family=family) + achievements_table = FamilyAchievementTable(data=achievements, prefix="achievement-") + achievements_table.paginate(per_page=5, page=self.request.GET.get('achievement-page', 1)) + context["achievement_list"] = achievements_table + return context