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

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 -v3

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 voudrais 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·ice·s.

  • 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.

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.

Création

Voici la marche à suivre pour implémenter des wrappeds pour son BDE :

Étape 1

Créer l’objet BDE avec les bonnes dates de début et de fin dans l’onglet Admin de la note

Étape 2

Créer le répertoire management/commands/bde_{bde.id}: c’est ici que vous allez travailler

Étape 3

Coder le wrapped, avec les caractéristique suivantes

Votre module doit posséder au moins deux fonctions :

  • bde_glob(cmd, bde, verb) pour les informations globales

  • bde_unique(cmd, bde, note, global_data, verb) pour les informations personnelles

Les paramètres sont les suivants :

  • cmd sert pour afficher la progression dans le shell

  • bde est votre BDE

  • note est la liste des notes pour lesquels un wrapped doit être généré

  • global_data est le résultat de bde_glob

  • verb est le paramètre de verbosité

Votre but est de récupérer tout ce qui vous intéresse, est de donner ça sous la forme d’un dictionnaire qui sera stocker dans le champs data_json.

Étape 4

Bravo à vous avez maintenant une grosse chaîne de caractère illisible pour chaque note !

Étape 5

Créer un répertoire templates/wrapped/{bde.id} et crée les deux templates obligatoires

Étape 6

Executer ./manage.py generate_wrapped -b "bde_name" -u adh -c active -v3, ça marchera du premier coup…

Étape 7

Attendre

Fin

Félicitations vous avez créé vos wrappeds ! Bien sûr vous n’êtes pas obligé de repartir de zéro chaque année, libre à vous de vous inspirer (fortement ou non) des années précédentes, et/ou de demander de l’aide à vos ancêtres.