diff --git a/apps/wrapped/templates/wrapped/1/wrapped_view_club.html b/apps/wrapped/templates/wrapped/1/wrapped_view_club.html
index 57da4a3f..6d295e9e 100644
--- a/apps/wrapped/templates/wrapped/1/wrapped_view_club.html
+++ b/apps/wrapped/templates/wrapped/1/wrapped_view_club.html
@@ -1,6 +1,6 @@
{% extends "wrapped/1/wrapped_base.html" %}
{% comment %}
-COPYRIGHT (C) 2018-2024 BDE ENS Paris-Saclay
+COPYRIGHT (C) 2018-2025 BDE ENS Paris-Saclay
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n pretty_money %}
@@ -23,9 +23,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
let d1 = document.getElementById("consumer");
let d2 = document.getElementById("creditor");
if (con) { d1.textContent = {{ big_consumer | safe }}[0] + " " + gettext("with") + " " + {{ big_consumer | safe}}[1] + "€";}
- else { d1.textContent = gettext("Infortunately, you doesn't have consumer this year");};
+ else { d1.textContent = gettext({% trans "Infortunately, you doesn't have consumer this year" %});};
if (cre) { d2.textContent = {{ big_creancier | safe}}[0] + " " + gettext("with") + " " + {{ big_creancier | safe}}[1] + "€";}
- else { d2.textContent = gettext("Congratulations you are a real rat !"); };
+ else { d2.textContent = gettext({% trans "Congratulations you are a real rat !" %}); };
{% endblock %}
diff --git a/apps/wrapped/templates/wrapped/wrapped_list.html b/apps/wrapped/templates/wrapped/wrapped_list.html
index 28892de5..c15d4ada 100644
--- a/apps/wrapped/templates/wrapped/wrapped_list.html
+++ b/apps/wrapped/templates/wrapped/wrapped_list.html
@@ -6,17 +6,24 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% load i18n %}
{% block content %}
-
-
-
-
-
- {% render_table table %}
-
-
-
+
+{% if tables|length > 0 %}
+
+
+ {% render_table tables.1 %}
+
+{% endif %}
+
+{% if tables|length > 0 %}
+
+
+ {% render_table tables.0 %}
+
+{% endif %}
{% endblock %}
@@ -25,7 +32,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
let club_not_public = {{ club_not_public }};
if (club_not_public) { (addMsg("{% trans "Do not forget to ask permission to people who are in your wrapped before to make them public" %}", 'warning'));}
function refreshTable() {
- $("#wrapped_table").load(location.pathname + " #wrapped_table");
+ $("#wrapped_tables").load(location.pathname + " #wrapped_tables");
}
function copylink(id) {
diff --git a/apps/wrapped/views.py b/apps/wrapped/views.py
index 0a16fd92..c787fd96 100644
--- a/apps/wrapped/views.py
+++ b/apps/wrapped/views.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
+# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
import json
@@ -6,7 +6,8 @@ import json
from django.contrib.auth.mixins import LoginRequiredMixin
from django.utils.translation import gettext_lazy as _
from django.views.generic import DetailView
-from django_tables2.views import SingleTableView
+from django.views.generic.list import ListView
+from django_tables2.views import MultiTableMixin
from permission.backends import PermissionBackend
from permission.views import ProtectQuerysetMixin
@@ -14,21 +15,29 @@ from .models import Wrapped
from .tables import WrappedTable
-class WrappedListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
+class WrappedListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, ListView):
"""
Display all Wrapped, and classify by year
"""
model = Wrapped
- table_class = WrappedTable
+ tables =[
+ lambda data: WrappedTable(data, prefix="public-"),
+ lambda data: WrappedTable(data, prefix="personnal-"),
+ ]
template_name = 'wrapped/wrapped_list.html'
extra_context = {'title': _("List of wrapped")}
def get_queryset(self, **kwargs):
return super().get_queryset(**kwargs).distinct()
- def get_table_data(self):
- return Wrapped.objects.filter(PermissionBackend.filter_queryset(
- self.request, Wrapped, "change", field='public')).distinct().order_by("-bde__date_start")
+ def get_tables_data(self):
+ return [
+ Wrapped.objects.filter(public=True),
+ Wrapped.objects
+ .filter(PermissionBackend.filter_queryset(self.request, Wrapped, "change", field='public'))
+ .distinct()
+ .order_by("-bde__date_start")
+ ]
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 79814474..3f4c22d7 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-25 13:47+0100\n"
+"POT-Creation-Date: 2025-03-13 21:08+0100\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: bleizi
\n"
"Language-Team: French \n"
@@ -865,7 +865,7 @@ msgstr "Taille maximale : 2 Mo"
msgid "This image cannot be loaded."
msgstr "Cette image ne peut pas être chargée."
-#: apps/member/forms.py:154 apps/member/views.py:103
+#: apps/member/forms.py:154 apps/member/views.py:117
#: apps/registration/forms.py:33 apps/registration/views.py:282
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
@@ -1194,11 +1194,11 @@ msgstr "Adhésion de {user} pour le club {club}"
msgid "The role {role} does not apply to the club {club}."
msgstr "Le rôle {role} ne s'applique pas au club {club}."
-#: apps/member/models.py:388 apps/member/views.py:745
+#: apps/member/models.py:388 apps/member/views.py:759
msgid "User is already a member of the club"
msgstr "L'utilisateur·rice est déjà membre du club"
-#: apps/member/models.py:400 apps/member/views.py:754
+#: apps/member/models.py:400 apps/member/views.py:768
msgid "User is not a member of the parent club"
msgstr "L'utilisateur·rice n'est pas membre du club parent"
@@ -1251,7 +1251,7 @@ msgid "Account #"
msgstr "Compte n°"
#: apps/member/templates/member/base.html:48
-#: apps/member/templates/member/base.html:62 apps/member/views.py:60
+#: apps/member/templates/member/base.html:62 apps/member/views.py:61
#: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile"
@@ -1312,8 +1312,8 @@ msgstr ""
"seront à nouveau possible."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:304
-#: apps/member/views.py:545
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:318
+#: apps/member/views.py:559
msgid "Note aliases"
msgstr "Alias de la note"
@@ -1505,51 +1505,51 @@ msgstr "Sauvegarder les changements"
msgid "Registrations"
msgstr "Inscriptions"
-#: apps/member/views.py:73 apps/registration/forms.py:23
+#: apps/member/views.py:74 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Cette adresse doit être valide."
-#: apps/member/views.py:140
+#: apps/member/views.py:154
msgid "Profile detail"
msgstr "Détails de l'utilisateur⋅rice"
-#: apps/member/views.py:206
+#: apps/member/views.py:220
msgid "Search user"
msgstr "Chercher un·e utilisateur·rice"
-#: apps/member/views.py:258
+#: apps/member/views.py:272
msgid "Note friendships"
msgstr "Amitiés note"
-#: apps/member/views.py:328
+#: apps/member/views.py:342
msgid "Update note picture"
msgstr "Modifier la photo de la note"
-#: apps/member/views.py:377
+#: apps/member/views.py:391
msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification"
-#: apps/member/views.py:404
+#: apps/member/views.py:418
msgid "Create new club"
msgstr "Créer un nouveau club"
-#: apps/member/views.py:423
+#: apps/member/views.py:437
msgid "Search club"
msgstr "Chercher un club"
-#: apps/member/views.py:461
+#: apps/member/views.py:475
msgid "Club detail"
msgstr "Détails du club"
-#: apps/member/views.py:573
+#: apps/member/views.py:587
msgid "Update club"
msgstr "Modifier le club"
-#: apps/member/views.py:607
+#: apps/member/views.py:621
msgid "Add new member to the club"
msgstr "Ajouter un·e nouvelleau membre au club"
-#: apps/member/views.py:736 apps/wei/views.py:991
+#: apps/member/views.py:750 apps/wei/views.py:991
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1557,19 +1557,19 @@ msgstr ""
"Cet⋅te utilisateur⋅rice n'a pas assez d'argent pour rejoindre ce club et ne "
"peut pas avoir un solde négatif."
-#: apps/member/views.py:758
+#: apps/member/views.py:772
msgid "The membership must start after {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
-#: apps/member/views.py:763
+#: apps/member/views.py:777
msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
-#: apps/member/views.py:913
+#: apps/member/views.py:927
msgid "Manage roles of an user in the club"
msgstr "Gérer les rôles d'un⋅e utilisateur⋅rice dans le club"
-#: apps/member/views.py:938
+#: apps/member/views.py:952
msgid "Members of the club"
msgstr "Membres du club"
@@ -2084,7 +2084,7 @@ msgid "Button displayed"
msgstr "Bouton affiché"
#: apps/note/templates/note/transactiontemplate_list.html:100
-#: apps/wrapped/templates/wrapped/wrapped_list.html:63
+#: apps/wrapped/templates/wrapped/wrapped_list.html:70
msgid "An error occured"
msgstr "Une erreur s'est produite"
@@ -3662,6 +3662,14 @@ msgstr "soirée·s organisée·s"
msgid "distinct members"
msgstr "Membres distinct·e·s"
+#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:26
+msgid "Infortunately, you doesn't have consumer this year"
+msgstr "Malheureusement, tu n'as pas de consommateur cette année"
+
+#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:28
+msgid "Congratulations you are a real rat !"
+msgstr "Félicitations, tu es un vrai rat !"
+
#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:13
msgid "You participate to the wei: "
msgstr "Tu as participé au wei : "
@@ -3699,7 +3707,15 @@ msgstr "avec"
msgid "Your expenses to BDE: "
msgstr "Tes dépenses au BDE : "
-#: apps/wrapped/templates/wrapped/wrapped_list.html:26
+#: apps/wrapped/templates/wrapped/wrapped_list.html:13
+msgid "My wrapped"
+msgstr "Mes wrapped"
+
+#: apps/wrapped/templates/wrapped/wrapped_list.html:22
+msgid "Public wrapped"
+msgstr "Wrapped public"
+
+#: apps/wrapped/templates/wrapped/wrapped_list.html:33
msgid ""
"Do not forget to ask permission to people who are in your wrapped before to "
"make them public"
@@ -3707,19 +3723,19 @@ msgstr ""
"N'oublies pas de demander la permission des personnes apparaissant dans un "
"wrapped avant de le rendre public"
-#: apps/wrapped/templates/wrapped/wrapped_list.html:33
+#: apps/wrapped/templates/wrapped/wrapped_list.html:40
msgid "Link copied"
msgstr "Lien copié"
-#: apps/wrapped/templates/wrapped/wrapped_list.html:58
+#: apps/wrapped/templates/wrapped/wrapped_list.html:65
msgid "Wrapped is private"
msgstr "Le wrapped est privé"
-#: apps/wrapped/templates/wrapped/wrapped_list.html:59
+#: apps/wrapped/templates/wrapped/wrapped_list.html:66
msgid "Wrapped is public"
msgstr "Le wrapped est public"
-#: apps/wrapped/views.py:24
+#: apps/wrapped/views.py:28
msgid "List of wrapped"
msgstr "Liste des wrapped"