diff --git a/apps/wrapped/templates/wrapped/1/wrapped_view_club.html b/apps/wrapped/templates/wrapped/1/wrapped_view_club.html
index 6d295e9e..35eca18e 100644
--- a/apps/wrapped/templates/wrapped/1/wrapped_view_club.html
+++ b/apps/wrapped/templates/wrapped/1/wrapped_view_club.html
@@ -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({% trans "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({% trans "Congratulations you are a real rat !" %}); };
+ else { d2.textContent = gettext("{% trans "Congratulations you are a real rat !" %}"); };
{% endblock %}
diff --git a/apps/wrapped/views.py b/apps/wrapped/views.py
index c787fd96..1300e1bc 100644
--- a/apps/wrapped/views.py
+++ b/apps/wrapped/views.py
@@ -20,9 +20,9 @@ class WrappedListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin,
Display all Wrapped, and classify by year
"""
model = Wrapped
- tables =[
- lambda data: WrappedTable(data, prefix="public-"),
- lambda data: WrappedTable(data, prefix="personnal-"),
+ 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")}
diff --git a/docs/_static/img/graphs/wrapped.svg b/docs/_static/img/graphs/wrapped.svg
new file mode 100644
index 00000000..e76497dc
--- /dev/null
+++ b/docs/_static/img/graphs/wrapped.svg
@@ -0,0 +1,118 @@
+
+
+
+
+
diff --git a/docs/apps/index.rst b/docs/apps/index.rst
index e16f5196..95315eb8 100644
--- a/docs/apps/index.rst
+++ b/docs/apps/index.rst
@@ -14,6 +14,7 @@ Applications de la Note Kfet 2020
logs
treasury
wei
+ wrapped
La Note Kfet 2020 est un projet Django, décomposé en applications.
Certaines applications sont développées uniquement pour ce projet, et sont indispensables,
@@ -69,4 +70,6 @@ Applications facultatives
Interface de gestion pour les trésorièr⋅es, émission de factures, remises de chèque, statistiques...
* `WEI `_ :
Interface de gestion du WEI.
+* `Wrapped `_ :
+ Récapitulatif personnalisé annuel de statitiques globales et personnelles.
diff --git a/docs/apps/wrapped.rst b/docs/apps/wrapped.rst
new file mode 100644
index 00000000..199572dc
--- /dev/null
+++ b/docs/apps/wrapped.rst
@@ -0,0 +1,108 @@
+Wrapped
+=======
+
+Cette application montre les statistiques annuelles des utilisateur·ice·s et/ou des clubs.
+
+Modèles
+-------
+
+Bde
+~~~
+
+Le modèle ``Bde`` contient des informations relatifs à un BDE :
+
+* ``name`` : ``CharField``, nom du BDE.
+* ``date_start`` : ``DateField``, date de prise de fonction du bureau BDE considéré.
+* ``date_end`` : ``DateField``, date de démission du bureau BDE considéré.
+
+Wrapped
+~~~~~~~
+
+Contient les informations sur un wrapped :
+
+* ``generated`` : ``BooleanField``, indique si le wrapped a été généré ou non.
+* ``public`` : ``BooleanField``, indique si le wrapped est visible de tous les utilisateur·ice·s ou non.
+* ``bde`` : ``ForeignKey(Bde)``, BDE auquel le wrapped correspond.
+* ``note`` : ``ForeignKey(Note)``, note à laquelle le wrapped correspond.
+* ``data_json`` : ``TextField``, diverses statistique concernant les notes durant le mandat BDE
+ considéré ou sur la NoteKfet dans sa globalité.
+
+Graphe des modèles
+~~~~~~~~~~~~~~~~~~
+
+.. image:: ../_static/img/graphs/wrapped.svg
+ :width: 960
+ :alt: Graphe des modèles de l'application Wrapped
+
+Fonctionnement
+--------------
+
+Création d'un BDE
+~~~~~~~~~~~~~~~~~
+
+Seul un⋅e respo info peut créer un BDE. Pour cela, se rendre dans l'onglet « Admin »., puis « BDE » et
+enfin « + Ajouter BDE ». Iel doit renseigner, les dates de début et de fin du bureau BDE ainsi que le
+nom de la liste.
+
+Génération des wrappeds
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Seul un·e respo info peut générer des wrappeds. Pour une utilisation annuelle classique, iel exécute la
+commande :
+
+``./manage.py generate_wrapped -b "bde_name" -u adh -c active``
+
+Pour une utilisation plus technique de cette commande se référer à sa documentation
+
+``./manage.py help generate_wrapped``
+
+Le script prend une dizaine de minutes pour générer tous les wrappeds.
+
+Créer ses propres wrappeds
+--------------------------
+
+Cette section est plus technique et s'addresse plutôt à des respos infos en cours de mandat qui voudrai
+faire les wrappeds de leur propre BDE.
+
+Contenu
+~~~~~~~
+
+Il est fortement conseillé de bien réfléchir à ce que l'on souhaite mettre sur un wrapped, plusieurs
+critères sont à prendre compte :
+
+* compréhension, est-ce que la donnée fait sens auprès des utilisateur·ice·s.
+* pertinence, est-ce que la donnée fonctionne pour un grand nombre d'utilisateur.
+* faisabilité, est-ce que le temps de calcul est suffisament rapide.
+* complexité, est-ce que c'est trop compliqué à coder.
+
+Script
+~~~~~~
+
+Le script *generate_wrapped* fonctionne de la manière suivante :
+
+* ``convert_to_note`` : en fonction des arguments d'entrée, il récupére toutes les notes dont le·s
+ wrapped·s va/vont être généré·s
+ ou regénéré·s.
+* ``global_data`` : le script génére ensuite des statistiques globales qui concernent pas qu'une seule
+ note (nombre de soirée, classement, etc).
+* ``unique_data`` : le script génére les statitiques uniques à chaque note, et rajoute des données
+ globales si nécessaire, pour chaque note on souhaite avoir un json avec toutes les données qui
+ seront dans le wrapped.
+* ``make_wrapped`` : enfin, le cas échéant, pour chaque bde, et pour chaque note, le wrapped est crée
+ ou modifié, et enregistré, s'il est crée il est par défault non public.
+
+Seules les fonctions ``global_data`` et ``unique_data`` sont à modifier, pour implementer un nouveau
+BDE.
+
+Template
+~~~~~~~~
+
+Il y a au moins deux templates a écrire pour chaque bde :
+
+* ``templates/wrapped/{bde_id}/wrapped_view_club.html``: le template pour les wrappeds des clubs
+* ``templates/wrapped/{bde_id}/wrapped_view_user.html``: le template pour les wrappeds des
+ utilisateur·ice·s
+
+Il est conseillé de suivre la même arborescence pour les fichiers statics (fonts personnalisées,
+images, css, etc). De même, il est conseillé de créé un fichier
+``templates/wrapped/{bde_id}/wrapped_base.html`` et d'étendre cette template.