WIP: Refonte de la gestions des clubs #861

Draft
lbailly wants to merge 14 commits from gestion-clubs into master
Member
  • Ajouter un équivalent de hackens.org/orga pour tout les clubs dans gestiocof
  • Meilleurs gestion des membres et des respo
- [ ] Ajouter un équivalent de hackens.org/orga pour tout les clubs dans gestiocof - [ ] Meilleurs gestion des membres et des respo
mdebray force-pushed gestion-clubs from 478e0d5d07 to 11aaef5f87 2025-03-10 21:42:10 +01:00 Compare
lbailly reviewed 2025-03-10 22:14:41 +01:00
lbailly left a comment
Author
Member

user.profile.is_buro est plus adapté que user.is_superuser lorsqu'il s'agit d'accès, le buro n'est pas superuser

`user.profile.is_buro` est plus adapté que `user.is_superuser` lorsqu'il s'agit d'accès, le buro n'est pas superuser
clubs/models.py Outdated
@ -17,0 +38,4 @@
class ClubBudgetLine(models.Model):
label = models.CharField(_("libellé"), max_length=1000, unique=True)
Author
Member

vraiment unique ? Ça veut dire que deux clubs différents (au hasard hackens et pls) ont pas le droit de mettre une ligne "Scotchs" (ou le même clubs plusieurs fois)
si c'est pour primary key, une index sequence me parait bien mieux.

vraiment unique ? Ça veut dire que deux clubs différents (au hasard hackens et pls) ont pas le droit de mettre une ligne "Scotchs" (ou le même clubs plusieurs fois) si c'est pour primary key, une index sequence me parait bien mieux.
Owner

oui lol

oui lol
mdebray marked this conversation as resolved
clubs/views.py Outdated
@ -0,0 +15,4 @@
is_archived=False
).values("name", "id")
if self.request.user.is_superuser:
Author
Member

user.profile.is_buro me parait plus adapté

`user.profile.is_buro` me parait plus adapté
mdebray marked this conversation as resolved
clubs/views.py Outdated
@ -0,0 +55,4 @@
def dispatch(self, request, *args, **kwargs):
if (
not self.request.user.is_superuser
Author
Member

user.profile.is_buro me parait plus adapté

`user.profile.is_buro` me parait plus adapté
mdebray marked this conversation as resolved
mdebray force-pushed gestion-clubs from 11aaef5f87 to eb548f7d6c 2025-03-14 15:43:01 +01:00 Compare
mdebray force-pushed gestion-clubs from eb548f7d6c to 52817cae7c 2025-03-14 15:59:18 +01:00 Compare
mdebray force-pushed gestion-clubs from 52817cae7c to 13d7332903 2025-03-14 16:02:51 +01:00 Compare
lbailly reviewed 2025-03-14 18:04:38 +01:00
lbailly left a comment
Author
Member

Il y a des problèmes d'installed apps entre gestiobds et gestiocof, qui font conflit, je fait une review plus complète quand c'est réglé (ptet que je le ferai). La solution la plus simple me simple de se déplacer, pour que se soit l'app "cof-clubs"

Il y a des problèmes d'installed apps entre gestiobds et gestiocof, qui font conflit, je fait une review plus complète quand c'est réglé (ptet que je le ferai). La solution la plus simple me simple de se déplacer, pour que se soit l'app "cof-clubs"
@ -34,6 +34,7 @@ app_dict = {
"bda": "gestion/bda/",
"petitscours": "gestion/petitcours/",
"events": "gestion/event_v2/", # the events module is still experimental !
"clubs": "gestion/budget/",
Author
Member

Même si c'est le truc principale sur lequel on travail actuellement, je suis pas sûr que l'app serve uniquement pour les budgets, elle pourrait servir de base de vérité pour les clubs (et respoclubs) à terme.
Je serai plus d'avis de mettre "gestion/clubs".

Même si c'est le truc principale sur lequel on travail actuellement, je suis pas sûr que l'app serve uniquement pour les budgets, elle pourrait servir de base de vérité pour les clubs (et respoclubs) à terme. Je serai plus d'avis de mettre "gestion/clubs".
Owner

Totalement d'accord

Totalement d'accord
mdebray marked this conversation as resolved
shell.nix Outdated
@ -53,6 +54,7 @@ pkgs.mkShell {
configparser
django-autocomplete-light
django-bootstrap-form
django-bulma-forms
Author
Member

faudrait aussi l'ajouter dans le requirements-prod.txt (non-urgent)

faudrait aussi l'ajouter dans le `requirements-prod.txt` (non-urgent)
Owner

C'est pas publié dans pypi

C'est pas publié dans pypi
Author
Member

Dans ce cas il faut un truc dans le readme pour avoir le paquet sans nix. Je veux pas que les gens galère à avoir un env de dev sur gestiocof sans nix à cause d'une dep

Dans ce cas il faut un truc dans le readme pour avoir le paquet sans nix. Je veux pas que les gens galère à avoir un env de dev sur gestiocof sans nix à cause d'une dep
mdebray marked this conversation as resolved
lbailly force-pushed gestion-clubs from c964f25182 to 14a66c9939 2025-03-14 19:17:41 +01:00 Compare
lbailly force-pushed gestion-clubs from ec53307901 to 7400b9da7d 2025-03-14 19:22:41 +01:00 Compare
lbailly force-pushed gestion-clubs from 7400b9da7d to 2316cd3d72 2025-03-14 19:25:26 +01:00 Compare
lbailly force-pushed gestion-clubs from 2316cd3d72 to e1a62e91f7 2025-03-14 19:25:57 +01:00 Compare
lbailly force-pushed gestion-clubs from e1a62e91f7 to cc97baad63 2025-03-14 19:43:37 +01:00 Compare
lbailly force-pushed gestion-clubs from e0ca0799de to 0e5fd1d790 2025-03-14 19:54:33 +01:00 Compare
Owner

Still TODO:

  • Clean up bulma import
  • rename urls
  • Better model (and their attr) names
  • Checker tous les champs de date pour qu'ils soient joli
  • checker les titres des vues de création/update
Still TODO: - [ ] Clean up bulma import - [ ] rename urls - [ ] Better model (and their attr) names - [x] Checker tous les champs de date pour qu'ils soient joli - [x] checker les titres des vues de création/update
lbailly reviewed 2025-03-18 00:28:33 +01:00
@ -0,0 +11,4 @@
class Meta:
model = ClubBudgetLine
fields = ["label", "amount", "date"]
widgets = {"date": forms.DateInput(attrs={"type": "date"}, format="%Y-%m-%d")}
Author
Member

Le format="%Y-%m-%d" me plait, mais il a pas l'air de marcher (même quand je l'edit dans l'inspect)

Le `format="%Y-%m-%d"` me plait, mais il a pas l'air de marcher (même quand je l'edit dans l'inspect)
Owner

Tu as quoi comme navigateur ? moi ça marche chez moi

Tu as quoi comme navigateur ? moi ça marche chez moi
Owner

Normalement input type="date" est bien supporté sur la plupart des navigateurs

Normalement `input type="date"` est bien supporté sur la plupart des navigateurs
@ -0,0 +30,4 @@
<div class="navbar-dropdown is-right">
<div class="dropdown-content">
<form class="navbar-item" action="{% url "cof-logout" %}">
{% csrf_token %}
Author
Member

il faut suppr ça, ça fait un truc bizarre quand on déco sinon.

il faut suppr ça, ça fait un truc bizarre quand on déco sinon.
Owner

Je crois c'est pas ça. En mettant des a le comportement change pas. C'est juste la logoutview qui est pétée j'ai l'impression. Le formulaire est correct pour se protéger des csrf, cf https://docs.djangoproject.com/en/4.2/topics/auth/default/#django.contrib.auth.views.LogoutView (la deprecation notice)

Je crois c'est pas ça. En mettant des a le comportement change pas. C'est juste la logoutview qui est pétée j'ai l'impression. Le formulaire est correct pour se protéger des csrf, cf https://docs.djangoproject.com/en/4.2/topics/auth/default/#django.contrib.auth.views.LogoutView (la deprecation notice)
mdebray marked this conversation as resolved
@ -0,0 +42,4 @@
<div class="navbar-item">
<div class="buttons">
<a href="{% url "cof-login" %}" class="button is-light">
<span>{% trans "Se connecter" %}</span>
Author
Member

On a des page là dedans qui seront pas en @cof_required (ou @buro_required) ?

On a des page là dedans qui seront pas en `@cof_required` (ou `@buro_required`) ?
Owner

Pour l'instant oui. Mais en vrai on peut mettre toutes les pages en login required

Pour l'instant oui. Mais en vrai on peut mettre toutes les pages en login required
Author
Member

Même en login required, cet partie sert pas. Il faut des pages sans login pour que se code s'active

Même en login required, cet partie sert pas. Il faut des pages sans login pour que se code s'active
Owner

oui tu as raison

oui tu as raison
mdebray marked this conversation as resolved
@ -0,0 +14,4 @@
{% empty %}
<div class="tag cell is-warning">Ce club n'a pas de respo déclaré</div>
{% endfor%}
</div>
Author
Member

Un form agréable ici pour ajouter des respo si buro serai sympa, dans la catégorie des QoL accessoire.

Un form agréable ici pour ajouter des respo si buro serai sympa, dans la catégorie des QoL accessoire.
Owner

Oui c'est dans les dernières features qui manquent. Mais je pense faire un clean up du code avant. Ce sera probablement le truc que je vais dev en dernier

Oui c'est dans les dernières features qui manquent. Mais je pense faire un clean up du code avant. Ce sera probablement le truc que je vais dev en dernier
mdebray marked this conversation as resolved
@ -0,0 +4,4 @@
app_name = "cof_clubs"
urlpatterns = [
path("club/", views.ClubListView.as_view(), name="club-list"),
Author
Member

Je serai plus d'avis de mettre l'url "/", étant donné que c'est la page principale du module.

Je serai plus d'avis de mettre l'url "/", étant donné que c'est la page principale du module.
mdebray marked this conversation as resolved
@ -0,0 +40,4 @@
success_url = reverse_lazy("cof_clubs:club-list")
class ClubListView(LoginRequiredMixin, TemplateView):
Author
Member

CofRequiredMixin au lieu de LoginRequiredMixin, cette page s'addresse aux adhérents

`CofRequiredMixin` au lieu de `LoginRequiredMixin`, cette page s'addresse aux adhérents
Owner

Alors il y a une vrai discussion d'implem à avoir. En particulier si tu es respo de club pour l'instant on ckeck pas ton adhesion. J'ai pris ce comportement pour pas se retrouver avec des situations étranges à la rentrée et une imposssibilité pour les clubs de consulter leur budget tant que le respo n'a pas adhéré ce qui est un peu une anti feature

Alors il y a une vrai discussion d'implem à avoir. En particulier si tu es respo de club pour l'instant on ckeck pas ton adhesion. J'ai pris ce comportement pour pas se retrouver avec des situations étranges à la rentrée et une imposssibilité pour les clubs de consulter leur budget tant que le respo n'a pas adhéré ce qui est un peu une anti feature
@ -0,0 +110,4 @@
)
.prefetch_related("club__respos", "club__budget_managers")
.order_by(
"accounting_period__is_archived", "accounting_period__name", "date"
Author
Member

Ça sert à rien de trier par accounting_period__is_archived, tu as filter pour avoir uniquement False

Ça sert à rien de trier par `accounting_period__is_archived`, tu as filter pour avoir uniquement `False`
mdebray marked this conversation as resolved
@ -0,0 +121,4 @@
"label",
"id",
"posted",
"accounting_period__is_archived",
Author
Member

Idem, sert pas d'en parler

Idem, sert pas d'en parler
mdebray marked this conversation as resolved
@ -0,0 +133,4 @@
s += line["amount"]
line["can_edit"] = self.request.user.profile.is_buro or (
not line["posted"]
and not line["accounting_period__is_archived"]
Author
Member

line["accounting_period__is_archived"] == False

`line["accounting_period__is_archived"] == False`
Owner

Pourquoi ?

Pourquoi ?
Author
Member

C'est une affirmation, pas une propal de réécriture
#861 (comment)

C'est une affirmation, pas une propal de réécriture https://git.dgnum.eu/DGNum/gestioCOF/pulls/861#issuecomment-13120
mdebray marked this conversation as resolved
@ -0,0 +144,4 @@
return ctx
class BudgetLineAccessMixin(AccessMixin):
Author
Member

Met ça dans un fichier decorators.py s'il te plait, comme c'est fait pour CofRequiredMixin ou BuroRequiredMixin

Met ça dans un fichier `decorators.py` s'il te plait, comme c'est fait pour `CofRequiredMixin` ou `BuroRequiredMixin`
mdebray marked this conversation as resolved
lbailly force-pushed gestion-clubs from e72c64ec3a to e4d591a6ea 2025-03-20 17:25:55 +01:00 Compare
lbailly force-pushed gestion-clubs from 9eab39d9c1 to 56adc30794 2025-03-27 18:06:15 +01:00 Compare
lbailly force-pushed gestion-clubs from 56adc30794 to 8fb4bd20c7 2025-03-27 23:05:34 +01:00 Compare
lbailly force-pushed gestion-clubs from d6daeec78a to 4c52b62d2a 2025-04-30 16:50:42 +02:00 Compare
lbailly added 1 commit 2025-04-30 16:54:21 +02:00
lbailly force-pushed gestion-clubs from 88d6470151 to 20d30c8ebf 2025-05-27 14:00:41 +02:00 Compare
lbailly force-pushed gestion-clubs from 20d30c8ebf to 44f8de0e67 2025-05-27 14:55:03 +02:00 Compare
lbailly force-pushed gestion-clubs from 44f8de0e67 to eab095aa2f 2025-05-27 14:59:54 +02:00 Compare
lbailly force-pushed gestion-clubs from eab095aa2f to 847b97030e 2025-05-27 15:02:39 +02:00 Compare
lbailly force-pushed gestion-clubs from 847b97030e to ccab227042 2025-05-27 15:04:40 +02:00 Compare
lbailly force-pushed gestion-clubs from ccab227042 to 8db6c6f012 2025-05-27 15:05:08 +02:00 Compare
lbailly force-pushed gestion-clubs from 8db6c6f012 to 5e72c49eaa 2025-05-27 15:16:31 +02:00 Compare
lbailly force-pushed gestion-clubs from 5e72c49eaa to 40d68bf622 2025-05-27 15:35:49 +02:00 Compare
lbailly force-pushed gestion-clubs from 40d68bf622 to 6c08023c05 2025-05-27 15:49:44 +02:00 Compare
lbailly force-pushed gestion-clubs from 6c08023c05 to 94ebd5cb28 2025-05-27 15:52:05 +02:00 Compare
lbailly force-pushed gestion-clubs from 94ebd5cb28 to f58555e1ec 2025-05-27 15:59:16 +02:00 Compare
lbailly force-pushed gestion-clubs from f58555e1ec to 44e06f4271 2025-05-27 16:01:24 +02:00 Compare
lbailly force-pushed gestion-clubs from 44e06f4271 to fdf2e2cee4 2025-05-27 16:06:45 +02:00 Compare
lbailly force-pushed gestion-clubs from fdf2e2cee4 to f3cd729847 2025-05-27 16:06:54 +02:00 Compare
lbailly force-pushed gestion-clubs from f3cd729847 to 80eb058f58 2025-05-27 16:14:09 +02:00 Compare
lbailly force-pushed gestion-clubs from 80eb058f58 to 58d55c4134 2025-05-27 16:15:12 +02:00 Compare
lbailly force-pushed gestion-clubs from 58d55c4134 to a75d448016 2025-05-27 16:15:24 +02:00 Compare
lbailly force-pushed gestion-clubs from a75d448016 to 8d49006d2d 2025-05-27 16:18:53 +02:00 Compare
lbailly force-pushed gestion-clubs from 8d49006d2d to f6d45355c5 2025-05-27 16:21:04 +02:00 Compare
lbailly force-pushed gestion-clubs from f6d45355c5 to f47bc19121 2025-05-27 16:28:37 +02:00 Compare
lbailly force-pushed gestion-clubs from f47bc19121 to 7cf79022b9 2025-05-29 12:12:19 +02:00 Compare
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin gestion-clubs:gestion-clubs
git checkout gestion-clubs
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DGNum/gestioCOF#861
No description provided.