BDE issueshttps://gitlab.crans.org/groups/bde/-/issues2020-09-09T13:06:02+02:00https://gitlab.crans.org/bde/nk20/-/issues/23Demandes de remboursement2020-09-09T13:06:02+02:00Michaël PaulonDemandes de remboursement**Feature**
On souhaiterai qu'un utilisateur `Alice` puisse demander à un autre utilisateur `Bob` de lui rembourser une somme N d'argent.
Pour celà on propose de mettre en place une interface «Demande de virement».
Dans cette interfac...**Feature**
On souhaiterai qu'un utilisateur `Alice` puisse demander à un autre utilisateur `Bob` de lui rembourser une somme N d'argent.
Pour celà on propose de mettre en place une interface «Demande de virement».
Dans cette interface, Alice rentre le nom de Bob ainsi que la somme d'argent demandé.
Quand il se connecte sur son compte Bob a alors un indicateur visuel (par exemple le bouton «Demande de virement» coloré/clignotant et il peut, par cette même interface accéder à une liste des demandes le concernant et les valider ou les supprimer en cliquant sur un bouton.
On voudra surement aussi que Bob reçoive un mail lui annonçant qu'il a une demande en cours (et que des rappels sur les demandes en cours soient présent dans ses mails de rapport par exemple) et on souhaitera aussi qu'Alice reçoive un mail lui confirmant l'acceptation du virement par Bob.
**Implementation**
On pensera à implémenter les restrictions de droits nécessaires pour que Bob ne puisse pas utiliser ce moyen pour passer trop profondément en négatif.
Il pourra peut-être être intéressant de mettre en place des restrictions sur le nombre de demandes de virements par intervalle de temps et/ou d'implémenter la possibilité de retirer le droit à quelqu'un de faire des demandes de virements en cas d'abus.Cara[Punch]https://gitlab.crans.org/bde/nk20/-/issues/47Accessibilité2020-09-09T13:06:28+02:00elkmaennchenAccessibilitéUn peu d'effort pour nos amis qui utilisent des aides pour naviger !
### Principes
L'idée est de prendre en compte notamment :
1. les gens qui utilisent des lecteurs d'écran
1. les gens qui utilisent des raccourcis de navigation
1. les ...Un peu d'effort pour nos amis qui utilisent des aides pour naviger !
### Principes
L'idée est de prendre en compte notamment :
1. les gens qui utilisent des lecteurs d'écran
1. les gens qui utilisent des raccourcis de navigation
1. les gens qui zoom la page
1. les gens qui ne distinguent pas/mal les couleurs et/ou les contrastes
##### 1. lecteurs d'écrans
2 règles principales : remplir systématiquement les champs de label de description précisément (mettre *logo de la note* et non pas *image* par exemple), et ne pas trop user de JavaScript kikoo (ou permettre de le désactiver)
**complexe pour tout vérifier**
##### 2. raccourcis
Le plus important est le déplacement de la sélection d'un objet à l'autre avec la touche *tab* (car utilisé également par des outils d'accessibilité installés sur l'ordi), notamment vérifier que tout est selectionnable et que les déplacements entre 2 voisins ne font pas parcourir tout l'écran dans tous les sens.
**facile à tester**
La touche espace pour simuler l'appui souris sur le bouton sélectionné est le 2ème plus usité.
##### 3. zoom
suivant la taille de l'écran et la patologie, on ne peut rien supposer sur le niveau de zoom, il faut donc que le text-wrapping coupe les mots comme en langue française (et pas juste au moment où plus de place), que les marges évoluent bien, ou encore que la page prenne en compte le besoin d'un défilement horizontal.
**facile à tester**
### Liste des choses à faires
* [ ] [nk20_commentaires01.pdf](/uploads/1a25bbc5684cc959e0a346036e4cea9b/nk20_commentaires01.pdf)
* [ ] faire une option *activer le thème accessibilité* ?Bul[binouze]https://gitlab.crans.org/bde/nk20/-/issues/62Ajouter une petite aide pour expliquer ce qu'est un masque de permission2020-09-09T13:10:36+02:00me5na7qbjqbrpAjouter une petite aide pour expliquer ce qu'est un masque de permission@erdnaxe est volontaire pour le coder. L'idée est de mettre un "?" à côté du champs "masque de permissions" qui ouvre une doc expliquant ce que c'est.@erdnaxe est volontaire pour le coder. L'idée est de mettre un "?" à côté du champs "masque de permissions" qui ouvre une doc expliquant ce que c'est.Bul[binouze]me5na7qbjqbrpme5na7qbjqbrphttps://gitlab.crans.org/bde/nk20/-/issues/65[Bug] 404 au lieu de 4032021-10-01T15:22:30+02:00Maxime Bombar[Bug] 404 au lieu de 403Si tu essayes d'accéder à une page pour laquelle tu n'as pas les droits, ça renvoie une 404 avec "{{ item }} matching query not found" (testé pour chercher un user, j'ai extrapolé mais je pense que c'est pareil partout, sinon faut unifor...Si tu essayes d'accéder à une page pour laquelle tu n'as pas les droits, ça renvoie une 404 avec "{{ item }} matching query not found" (testé pour chercher un user, j'ai extrapolé mais je pense que c'est pareil partout, sinon faut uniformiser).
Ça devrait être une 403. Erdnaxe dit que c'est pour pas leaker d'info, je pense que c'est surtout un non sens sur la sémantique. Si t'as les droits mais que l'user existe pas --> 404 ok. Si t'as pas les droits, je dis qu'il faut une 403, que l'user existe ou pas. Là ça respecte la sémantique ET ça leake aucune info.https://gitlab.crans.org/bde/nk20/-/issues/66Utiliser un indexeur2020-09-09T13:11:49+02:00me5na7qbjqbrpUtiliser un indexeurL'idée serait d'indexer les différentes pages de recherche pour augmenter la vitesse et la pertinence des recherches. Ça permettrait aussi de trivialiser le code de certaines pages.
Django Haystack est packagé dans Debian et permet just...L'idée serait d'indexer les différentes pages de recherche pour augmenter la vitesse et la pertinence des recherches. Ça permettrait aussi de trivialiser le code de certaines pages.
Django Haystack est packagé dans Debian et permet justement de réaliser cela. Je vais tenter un Proof of Concept.me5na7qbjqbrpme5na7qbjqbrphttps://gitlab.crans.org/bde/nk20/-/issues/73Mettre à jour django-oauth2-toolkit pour supporter OpenID Connect2024-02-12T23:32:54+01:00me5na7qbjqbrpMettre à jour django-oauth2-toolkit pour supporter OpenID ConnectLa prochaine version de django-oauth2-toolkit ajoute le support d'OpenID Connect. Elle devrait sortir dans les prochains jours.
OpenID Connect est une couche d'abstraction par dessus OAuth2 permettant d'identifier les utilisateurs. OAut...La prochaine version de django-oauth2-toolkit ajoute le support d'OpenID Connect. Elle devrait sortir dans les prochains jours.
OpenID Connect est une couche d'abstraction par dessus OAuth2 permettant d'identifier les utilisateurs. OAuth2 n'est qu'un protocole pour rendre une API disponible à une autre application.nk20 v2.0.0 with django 4.2bleizibleizihttps://gitlab.crans.org/bde/nk20/-/issues/76CI trop longue2021-09-27T14:03:16+02:00ynerantynerant@crans.orgCI trop longueLa CI prend environ 10 minutes à s'exécuter. Sur ces 10 minutes, 7 à 8 minutes sont dédiées à l'installation des dépendances. C'est trop long pour attendre les résultats d'un test (surtout si on veut faire une MR).
Il faut mettre en pla...La CI prend environ 10 minutes à s'exécuter. Sur ces 10 minutes, 7 à 8 minutes sont dédiées à l'installation des dépendances. C'est trop long pour attendre les résultats d'un test (surtout si on veut faire une MR).
Il faut mettre en place une étape de compilation d'une image Docker qui ne se recrée que si les dépendances ont changé, et utilise l'image précédemment générée si rien a changé, afin de sauter cette phase d'installation.
Cela pourra être fait par exemple lorsque le Crans aura sa propre registry Docker.https://gitlab.crans.org/bde/nk20/-/issues/77UI de l'interface clubs2020-10-07T21:36:57+02:00ynerantynerant@crans.orgUI de l'interface clubsL'interface clubs est peu intuitive, et peu fonctionnelle : il faut beaucoup de clicks pour effectuer une action. Il faut peut-être une refonte, afin de rendre l'interface plus intuitive.
Feature request : ajouter un champ qui permet au...L'interface clubs est peu intuitive, et peu fonctionnelle : il faut beaucoup de clicks pour effectuer une action. Il faut peut-être une refonte, afin de rendre l'interface plus intuitive.
Feature request : ajouter un champ qui permet aux adhérents BDE d'adhérer eux-même à un club.
Points backend qui me posent un peu souci :
* Souvent, un trez de club est nommé lors d'une passation en février-mars jusqu'en février-mars qui suit, alors que les adhésions durent de août à septembre (année+1). Ça manque un peu de cohérence. Même si en pratique on peut changer les rôles n'importe quand, si on trouve plus propre je suis preneur.
* J'ai un peu du mal avec le fait de devoir adhérer pour certains clubs, notamment les clubs événementiels (type BdL) qui n'accueillent pas vraiment d'adhérents. J'avais proposé comme solution de pouvoir désactiver le fait de proposer des adhésions, et en gros pour donner un droit on fait une adhésion qui dure à vie et on change les rôles quand on le souhaite. Je sais pas trop comment formuler ce qui me chiffonne, mais j'aime pas le concept d'"adhérer" quand c'est pas réellement une adhésion. C'est probablement pas clair et n'est peut-être pas un point important.
* On fait quoi des assos ? Les associations ne dépendent pas du BDE. Pourtant, les assos utilisent la note, qui est un service du BDE. Laisse-t-on la possibilité aux assos d'enregistrer leurs adhérents sur la note ? J'ai envie de dire non : cette liste d'adhérents ne pourrait être qu'incomplète puisqu'ils ne peuvent pas imposer leurs adhérents d'être adhérents BDE. Quant aux droits accordés : est-il bon de laisser un trez d'une autre asso pouvoir faire des transferts sur la note du BDE ? J'ai rien contre, c'est pratique, mais la réponse me paraît pas triviale.
J'ajouterai dans cette issue toute chose qui me gêne concernant les adhésions club.Cara[Punch]https://gitlab.crans.org/bde/nk20/-/issues/78Inscription automatique aux mailing lists de clubs2020-10-18T14:52:36+02:00ynerantynerant@crans.orgInscription automatique aux mailing lists de clubsEn plus de l'inscription à la ML événements (cf #50), on devrait pouvoir ajouter un champ pour chaque club de liste de diffusion.
En faisant adhérer quelqu'un a un club, il a la possibilité via une case à cocher pour s'inscrire à une li...En plus de l'inscription à la ML événements (cf #50), on devrait pouvoir ajouter un champ pour chaque club de liste de diffusion.
En faisant adhérer quelqu'un a un club, il a la possibilité via une case à cocher pour s'inscrire à une liste de diffusion. Il peut ensuite gérer son inscription via la note.
Cela ne doit toutefois pas empêcher les inscriptions à la ML de personnes extérieures, sans passer par la note.Cara[Punch]https://gitlab.crans.org/bde/nk20/-/issues/79Utilitaire pour faire des stats faciliter la vie des trésoriers2021-05-29T11:22:43+02:00ynerantynerant@crans.orgUtilitaire pour faire des stats faciliter la vie des trésoriersDjango montre sa puissance avec son abstraction de requêtes SQL, mais peut sembler trop complexe pour un trésorier non-averti.
Afin de pré-mâcher le travail, on peut prévoir des fonctions qui construisent des Queryset mais en étant plus...Django montre sa puissance avec son abstraction de requêtes SQL, mais peut sembler trop complexe pour un trésorier non-averti.
Afin de pré-mâcher le travail, on peut prévoir des fonctions qui construisent des Queryset mais en étant plus explicite. Par exemple, on peut prévoir un constructeur de classements de transactions, par jour, par bouton (regex de nom de bouton plutôt), ... En gros rajouter une couche d'abstraction plus human-friendly vis-à-vis de l'utilisation de la note au-dessus de la couche de Django.
La pertinence est discutable, il faut que ça reste exploitable. Mais Django c'est compliqué quand on maîtrise pas.
Ces fonctions pourraient soit être placées dans chaque modèle concerné, ce qui offre l'avantage de ne pas avoir d'import supplémentaire, mais ça les aloudirait sachant que ces fonctions n'ont pas vocations à être utilisées dans le code (si ce n'est dans des tests). On peut prévoir un fichier / une app séparée.https://gitlab.crans.org/bde/nk20/-/issues/80Système d'annonce bannière2024-02-12T23:34:32+01:00Pierre-antoine CombySystème d'annonce bannièreÀ l'image de ce qui est faut dans --toute bonne usine à gaz--- différents services (Gitlab, etc...) Pouvoir prévenir les utilisateur de la note (donc les adhérents BDE) d'information concernant la note (renouvellement d'adhésion, WEI, et...À l'image de ce qui est faut dans --toute bonne usine à gaz--- différents services (Gitlab, etc...) Pouvoir prévenir les utilisateur de la note (donc les adhérents BDE) d'information concernant la note (renouvellement d'adhésion, WEI, etc).
Des notifications/bannières sont déjà théoriquement possibles, mais nécessite de mettre les mains dans le code. Une interface dans l'admin serait idéal.
Pas besoin de forcément réinventer la roue: https://django-constance.readthedocs.io/en/latest/#)nk20 v2.0.0 with django 4.2https://gitlab.crans.org/bde/nk20/-/issues/86Répétitivité dans les personnes sur la page : droits2021-01-19T17:33:19+01:00rlaliRépétitivité dans les personnes sur la page : droitsDû au cumul des pouvoirs IRL des personnes, sur la liste des personnes ayant des droits spéciaux, on retrouve la répétition de certains noms, c'est embêtant quand on veut checker les droits de quelqu'un.
L'idée serait de faire un `GROUP...Dû au cumul des pouvoirs IRL des personnes, sur la liste des personnes ayant des droits spéciaux, on retrouve la répétition de certains noms, c'est embêtant quand on veut checker les droits de quelqu'un.
L'idée serait de faire un `GROUP BY` sur les utilisateurs et de les `ORDER BY` sur le pseudo ou le nom.Bul[binouze]rlalirlali2021-02-14https://gitlab.crans.org/bde/nk20/-/issues/87Bootstrap 52024-02-12T23:32:06+01:00ynerantynerant@crans.orgBootstrap 5Faut virer jQuery et utiliser du meilleur JavaScript
<3 erdnaxeFaut virer jQuery et utiliser du meilleur JavaScript
<3 erdnaxenk20 v2.0.0 with django 4.2https://gitlab.crans.org/bde/nk20/-/issues/88Loggrep2021-01-30T19:46:22+01:00ynerantynerant@crans.orgLoggrepToutes les modifications en base de données sont enregistrées. On enregistre l'utilisateur (qu'on récupère via l'utilisateur unix si jamais c'est fait via un shell django), l'adresse IP utilisée, la date, le type de modèle ajouté/modifié...Toutes les modifications en base de données sont enregistrées. On enregistre l'utilisateur (qu'on récupère via l'utilisateur unix si jamais c'est fait via un shell django), l'adresse IP utilisée, la date, le type de modèle ajouté/modifié/supprimé, le type de modification (ajout/modification/suppression), la clé primaire (le pk) de l'objet en question, et le diff en JSON (voir le modèle logs.Changelog).
On a donc tout ce qu'on peut vouloir. C'est accessible via l'API avec des bons filtres.
Problème : c'est pas ultra user-friendly. Ça a pas forcément lieu de l'être, mais bon ça peut être pénible de savoir qui a quel identifiant, quel modèle à quel identifiant, ...
Je propose d'ajouter un script appelé `loggrep` qui permet de faire une recherche interactive (ou via des paramètres) dans les logs ergonomiquement.
En particulier, on doit pouvoir filtrer par modèle donné en anglais, par pk (le plus important ^^), éventuellement s'amuser à mettre des filtres qui vont chercher dans le diff JSON. La sortie peut être assez belle, paginée si on a la fois mais c'est compliqué, mais surtout on indique la personne ayant fait l'action et pas son identifiant.
Libre à celui ou celle qui implémente cette fonctionnalité de faire ce qu'il ou elle veut.
Je l'ai pas dit mais c'était implicite : *il faut un script CLI*, hors de question d'avoir une interface web pour les logs.
Ah, et bien sûr : **ce script doit être documenté** (bon il y a encore du boulot à faire sur ce point je sais ...)https://gitlab.crans.org/bde/nk20/-/issues/95Export calendrier ICS n'a pas la bonne timezone2024-03-11T10:22:56+01:00me5na7qbjqbrpExport calendrier ICS n'a pas la bonne timezone![image](/uploads/68c4db2e9fbd242c1b6c06e8b80a3ece/image.png)
L'ICS ne paramètre pas correctement la timezone. Certains clients de calendrier décalent donc les évènements de 2h.![image](/uploads/68c4db2e9fbd242c1b6c06e8b80a3ece/image.png)
L'ICS ne paramètre pas correctement la timezone. Certains clients de calendrier décalent donc les évènements de 2h.https://gitlab.crans.org/bde/nk20/-/issues/96[WEI] Amelioration de l'UI/UX2023-08-30T16:02:56+02:00Pierre-antoine Comby[WEI] Amelioration de l'UI/UXAprès une soirée à inscrire des gens au WEI j'ai trouvé plusieurs petits trucs à faire, je fais cette issue pour en faire le suivi:
- [x] Apres avoir validé un wei, revenir à la page des inscriptions à valider, pas la page d'accueil du...Après une soirée à inscrire des gens au WEI j'ai trouvé plusieurs petits trucs à faire, je fais cette issue pour en faire le suivi:
- [x] Apres avoir validé un wei, revenir à la page des inscriptions à valider, pas la page d'accueil du wei.
- [X] Un 1A qui décide de faire la Sogé a posteriori (après avoir payé son adhésion Kfet) ne peut pas le faire.
- [ ] Pouvoir cocher la case chèque de caution la validation (en plus de pouvoir la cocher dans la modification du profil)bleizibleizihttps://gitlab.crans.org/bde/nk20/-/issues/99Différencier les liens des boutons2021-10-05T16:15:33+02:00me5na7qbjqbrpDifférencier les liens des boutonsJ'ai découvert récemment que `<a>` et `<button>` n'ont pas le même comportement malgré le fait qu'ils se stylisent de la même manière :
* `a` permet de faire un lien vers une autre page, il est donc draggable par défaut : on peut le gli...J'ai découvert récemment que `<a>` et `<button>` n'ont pas le même comportement malgré le fait qu'ils se stylisent de la même manière :
* `a` permet de faire un lien vers une autre page, il est donc draggable par défaut : on peut le glisser déposer dans ses favoris,
* `button` permet de faire un... bouton de l'interface, il n'est donc pas draggable par défaut.
On abuse des `<a>` dans la note à des endroits où il faudrait des `<button>`. Cela rend l'expérience un peu frustrante quand les inputs du browser lagguent car on se retrouve à drag&drop quelque chose qui ne devrait pas l'être.me5na7qbjqbrpme5na7qbjqbrphttps://gitlab.crans.org/bde/nk20/-/issues/100Compacter l'interface2021-10-04T11:04:45+02:00me5na7qbjqbrpCompacter l'interfaceLors du design de l'UI, j'avais fait quelque chose de très espacé / respiré tout en gardant une police de caractère grosse. Cela oblige de dézoomer sur l'écran PC kfet et sur le laptop prêté par la DSI.
Il suffit d'ajouter des modifiers...Lors du design de l'UI, j'avais fait quelque chose de très espacé / respiré tout en gardant une police de caractère grosse. Cela oblige de dézoomer sur l'écran PC kfet et sur le laptop prêté par la DSI.
Il suffit d'ajouter des modifiers bootstrap pour rendre l'interface plus concise (et potentiellement avec un look un peu plus moderne).https://gitlab.crans.org/bde/nk20/-/issues/101Enlever TurboLinks sans perdre en performances2024-02-12T23:35:37+01:00me5na7qbjqbrpEnlever TurboLinks sans perdre en performancesDans la source du front :
```
<script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js"
crossorigin="anonymous"></script>
```
Initialement je proposais de commiter le fichier minifié pour s'affr...Dans la source du front :
```
<script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js"
crossorigin="anonymous"></script>
```
Initialement je proposais de commiter le fichier minifié pour s'affranchir du CDN, mais TurboLinks n'est plus maintenu et ne fait plus beaucoup de sens avec la légereté qu'apporte Bootstrap 5.
- [ ] Migrer sur le bundle Bootstrap 5 pour enlever Poppler.js
- [ ] Enlever JQuery et migrer sur du ECMAScript 2017 (natif)
- [ ] Enlever Font Awesome (100kB de moins à cacher et évite le clignotement des icônes)
- [ ] Tester les vitesses de rendu de page avec HTTP/2, Django en asynchrone, avec du cache... afin d'avoir la vitesse de TurboLinks nativement.nk20 v2.0.0 with django 4.2me5na7qbjqbrpme5na7qbjqbrphttps://gitlab.crans.org/bde/nk20/-/issues/104Les emails des clubs ne sont pas vérifiés2021-10-05T12:29:11+02:00Pierre-antoine CombyLes emails des clubs ne sont pas vérifiésTout est dans le titre.
Les emails de contact des clubs ne sont pas vérifié, contrairement à ceux des utilisateurs. À mon sens ca devrait être aussi le cas pour les clubs.Tout est dans le titre.
Les emails de contact des clubs ne sont pas vérifié, contrairement à ceux des utilisateurs. À mon sens ca devrait être aussi le cas pour les clubs.