Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pilotage : Mise en place d'une route pour accéder aux tableaux de bord par leur nom #4466

Merged
merged 2 commits into from
Jul 31, 2024

Conversation

rsebille
Copy link
Contributor

@rsebille rsebille commented Jul 25, 2024

🤔 Pourquoi ?

Le même tableau de bord peut être utiliser pour des types d'institution partenaire différente, le fonctionnement actuel fait que l'on crée une route pour chaque combinaison (don't feed the troll), le problème est que pour un autre ticket j'ai besoin de mettre en place des liens (affichés pour le moment à la DGEFP, aux DREETS IAE et aux DDETS IAE) qui pointent vers la bonne URL du tableau de bord privé donc plutôt que de faire une tambouille dans la vue ou le template je crée une vue qui fait le taf et qu'on pourra à terme utiliser comme point d'entrée histoire de simplifier tout ça.

🍰 Comment ?

Le code actuel est certe ultra-redondant mais il suit une nomenclature bien précise, je me base donc dessus pour implémenter un comportement générique.

@rsebille rsebille added the no-changelog Ne doit pas figurer dans le journal des changements. label Jul 25, 2024
@rsebille rsebille self-assigned this Jul 25, 2024
@rsebille rsebille force-pushed the rsebille/c2/one-route-to-rule-them-all branch from 20ee68e to 0fcf2c9 Compare July 29, 2024 14:46
@rsebille rsebille force-pushed the rsebille/c2/one-route-to-rule-them-all branch from 0fcf2c9 to d8a4afd Compare July 29, 2024 15:05
@rsebille rsebille marked this pull request as ready for review July 29, 2024 15:14
Copy link
Contributor

@francoisfreitag francoisfreitag left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour le moment, je ne vois pas bien le gain, mais je suis sûr qu’un PR à venir le mettra en valeur :)

def stats_redirect(request, dashboard_name):
match request.user.kind:
case UserKind.LABOR_INSPECTOR:
normalized_organization_kind = request.current_organization.kind.lower().replace(" ", "_")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça donne envie de virer l’espace de la valeur pour kind, mais j’ai un peu peur qu’on l’utilise directement.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai pas regardé si c'était la merde (faut faire des migrations) ou LA MERDE (faut toucher à des requêtes SQL jusque dans le pilotage) mais oui l'espace m'a aussi un peu étonné.

Copy link
Contributor Author

@rsebille rsebille left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour le moment, je ne vois pas bien le gain, mais je suis sûr qu’un PR à venir le mettra en valeur :)

J'ai essayer d'expliquer au mieux dans le "Pourquoi" mais si tu veux un exemple c'est pour faire ceci : 6f13b27#diff-223fd8697068ddce3d37c8ff1af642529bacdb3720e156c939bebb52edb73852R43
Et ainsi avoir exactement le même template pour tout les types d'institution sans avoir à passer le bon nom de route suivant le type de l'organisation : stats_ddets_iae_tension, stats_dreets_iae_tension, stats_dgefp_tension

def stats_redirect(request, dashboard_name):
match request.user.kind:
case UserKind.LABOR_INSPECTOR:
normalized_organization_kind = request.current_organization.kind.lower().replace(" ", "_")
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai pas regardé si c'était la merde (faut faire des migrations) ou LA MERDE (faut toucher à des requêtes SQL jusque dans le pilotage) mais oui l'espace m'a aussi un peu étonné.

path("dgefp/hiring", views.stats_dgefp_iae_hiring, name="stats_dgefp_iae_hiring"),
path("dgefp/state", views.stats_dgefp_iae_state, name="stats_dgefp_iae_state"),
path("dgefp/siae_evaluation", views.stats_dgefp_iae_siae_evaluation, name="stats_dgefp_iae_siae_evaluation"),
path("dgefp/af", views.stats_dgefp_iae_af, name="stats_dgefp_iae_af"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suis choqué que tu n'en profites pas pour les trier 🔡

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je l'ai pas fait pour limiter la diff 👼, mais j'aimerais bien virer toutes ces routes donc je garde quelques trucs qui grattent pour ne pas que ça soit trop "propre" non plus 😁.

case UserKind.LABOR_INSPECTOR:
normalized_organization_kind = request.current_organization.kind.lower().replace(" ", "_")
case _:
return HttpResponseNotFound()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je pense au cas d'un membre DDETS_IAE/DDETS_GEIQ connecté en GEIQ qui se prendrait une 404:
je me demande si on ne peut pas améliorer le message de la 404 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je pense au cas d'un membre DDETS_IAE/DDETS_GEIQ connecté en GEIQ

Pas sûr de comprendre 🤔.
Un compte LABOR_INSPECTOR ne peux normalement pas se lier à un CompanyMembership, non ?

Et pour le coup j'ai pris le parti de faire la fonction très simple quitte à avoir quelques erreurs au début, plutôt que commencer à mettre des vérifications dans tout les sens.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je parle de https://github.com/gip-inclusion/les-emplois/blob/master/itou/institutions/enums.py#L7-L10
Si sa current_organization est DDETS_GEIQ et qu'il va sur un tableau de bord IAE, il aura une 404 sans forcément faire le lien avec son institution ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, compris ! 😫 🥵

Dans ce cas là il aura pas la 404 mais la 500 [1] car son type d'utilisateur est bon mais la route stats_ddets_geiq_{dashboard_name} n'existera sans doute pas.

C'est toujours la même problématique de prendre current_organization ou organizations pour les ACL, et la perméabilité entre les deux, mais de toute manière vu comment son fait les ACL pour les TB ça serais pas vraiment possible de lui dire "Change d'organisation pour voir ce TB".

[1] Je suis parti sur cette idée car une 500 fera une erreur sentry et donc on verra les erreurs réelles plutôt qu'ajouter du code défensif dés le départ sur un truc qui petit et non-critique

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui pas de super solution à proposer 😬

@rsebille rsebille added this pull request to the merge queue Jul 31, 2024
Merged via the queue into master with commit abb183f Jul 31, 2024
11 checks passed
@rsebille rsebille deleted the rsebille/c2/one-route-to-rule-them-all branch July 31, 2024 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-changelog Ne doit pas figurer dans le journal des changements.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants