From ea8fcad8b594b2c9f8f53952e972c6c26624e489 Mon Sep 17 00:00:00 2001 From: ikea Date: Sat, 19 Jul 2025 00:52:10 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20d=C3=A9fis=20r=C3=A9alis=C3=A9s?= =?UTF-8?q?=20par=20une=20famille?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/family/tables.py | 13 +++++++++++++ apps/family/templates/family/family_detail.html | 9 +++++++++ apps/family/views.py | 8 +++++++- 3 files changed, 29 insertions(+), 1 deletion(-) 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