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

Administration: correction des formulaire d'ajout et de modification de diagnostic via l'admin #5439

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

tonial
Copy link
Contributor

@tonial tonial commented Jan 21, 2025

🤔 Pourquoi ?

L'idée est de permettre la régularisation par le support sans avoir à détourner les comptes, et en pouvant mettre un commentaire sur le diag créé.

Ça a l'inconvénient de dupliquer un peu la vérification des informations, mais je ne suis pas sur qu'envoyer sur les méthodes create_eligibility_diagnosis ou create_diagnosis soit mieux.

🍰 Comment ?

Décrivez en quelques mots la solution retenue et mise en oeuvre, les difficultés ou problèmes rencontrés. Attirez l'attention sur les décisions d'architecture ou de conception importantes.

🚨 À vérifier

  • Mettre à jour le CHANGELOG_breaking_changes.md ?

🏝️ Comment tester

Les instructions pour reproduire le problème, les profils de test, le parcours spécifique à utiliser, etc. Si vous disposez d'une recette jetable, mettre l'URL pour tester dans cette partie.

💻 Captures d'écran

@tonial tonial added 1-recette-jetable [Payé à l’heure] Crée une recette jetable sur CC modifié bug labels Jan 21, 2025
@tonial tonial self-assigned this Jan 21, 2025
Copy link

🥁 La recette jetable est prête ! 👉 Je veux tester cette PR !

@tonial tonial removed the 1-recette-jetable [Payé à l’heure] Crée une recette jetable sur CC label Jan 21, 2025
@tonial tonial force-pushed the alaurent/admin_diags branch 4 times, most recently from cd0ff03 to de1cff4 Compare January 21, 2025 21:54
@tonial tonial force-pushed the alaurent/admin_diags branch 3 times, most recently from fbb9df6 to 3790fcd Compare January 22, 2025 21:17
@tonial tonial requested a review from xavfernandez January 22, 2025 21:22
@tonial tonial force-pushed the alaurent/admin_diags branch 2 times, most recently from 4ec1a83 to 0eb6867 Compare January 23, 2025 08:50
Copy link
Contributor

Choose a reason for hiding this comment

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

J'ai l'impression qu'il y a plus que la correction du formulaire dans ce commit 🕵️

Copy link
Contributor Author

@tonial tonial Jan 23, 2025

Choose a reason for hiding this comment

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

J'ai modifié le titre : des formulaires d'ajout et de modification :)

Le limit_choices_to c'est aussi pour corriger le formulaire en vérifiant les données saisies

itou/eligibility/admin_form.py Outdated Show resolved Hide resolved
itou/eligibility/admin_form.py Outdated Show resolved Hide resolved
@tonial tonial changed the title Administration: correction des formulaire d'ajout de diagnostic via l'admin Administration: correction des formulaire d'ajout et de modification de diagnostic via l'admin Jan 23, 2025
@tonial tonial force-pushed the alaurent/admin_diags branch from 8e5a711 to 57eccc1 Compare January 23, 2025 12:34
@tonial tonial requested a review from xavfernandez January 23, 2025 12:37
@tonial tonial force-pushed the alaurent/admin_diags branch from 57eccc1 to ea1b042 Compare January 23, 2025 12:56
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.

Le fichier de tests donne très envie d’écrire un gros parametrize 😇

itou/eligibility/models/geiq.py Outdated Show resolved Hide resolved
@@ -14,8 +15,8 @@
class AbstractSelectedAdministrativeCriteriaInlineFormSet(BaseInlineFormSet):
def clean(self):
super().clean()
for line in self.cleaned_data:
if line["DELETE"] and line["id"].certified:
for line in getattr(self, "cleaned_data", []):
Copy link
Contributor

Choose a reason for hiding this comment

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

Revert cette ligne ne cause aucun échec de test, j’ai l’impression que c’est inutile?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Là encore impossible de retrouver comment j'avais fait planter avant de corriger cette ligne.
C'est peut être encore un autre élément du formulaire modifié après coup qui a corriger l'origine du self.cleaned_data==None

itou/eligibility/admin_form.py Outdated Show resolved Hide resolved
itou/eligibility/admin_form.py Outdated Show resolved Hide resolved
itou/eligibility/admin_form.py Outdated Show resolved Hide resolved
author_geiq = getattr(self, "author_geiq", None)
job_seeker = getattr(self, "job_seeker", None)

if author_geiq and self.author_geiq.kind != CompanyKind.GEIQ:
Copy link
Contributor

Choose a reason for hiding this comment

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

Tu peux utiliser self.author_geiq_id pour vérifier si le champ auteur_geiq est rempli sans requête SQL (ni RelatedObjectDoesNotExist).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

idem, je garde l'idée sous la main si jamais l'erreur revient

"selected_administrative_criteria-TOTAL_FORMS": "1",
"selected_administrative_criteria-0-id": "",
"selected_administrative_criteria-0-eligibility_diagnosis": "",
"selected_administrative_criteria-0-administrative_criteria": "1",
Copy link
Contributor

Choose a reason for hiding this comment

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

Il serait plus juste d’utiliser une vraie PK. Il se trouve effectivement que la PK 1 existe, mais on devrait éviter de le supposer.

Copy link
Contributor Author

@tonial tonial Jan 23, 2025

Choose a reason for hiding this comment

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

C'est défini en dur dans administrative_criteria.json
Je peux ajouter un commentaire l'expliquant ou effectivement appeler AdministrativeCriteria.objects.first().pk à la place

tests/eligibility/test_admin.py Outdated Show resolved Hide resolved
tests/eligibility/test_admin.py Outdated Show resolved Hide resolved
tests/eligibility/test_admin.py Outdated Show resolved Hide resolved
@tonial
Copy link
Contributor Author

tonial commented Jan 23, 2025

J'ai envisagé l'enorme paramétrize, et j'ai eu la flemme parce qu'il y a quand même pas mal de choses qui changent d'un cas à l'autre (et c'est dommage).

Je vais regarder une fois de plus 🙈

@tonial
Copy link
Contributor Author

tonial commented Jan 23, 2025

Je confirme que c'était un poil pénible à mettre en place, mais c'est bon, les tests et la factory sont ré-écrit pour mutualiser le code

@tonial tonial force-pushed the alaurent/admin_diags branch from ea1b042 to af9af40 Compare January 23, 2025 22:37
@tonial
Copy link
Contributor Author

tonial commented Jan 23, 2025

Merci @francoisfreitag pour tous ces commentaires très pertinents.
J'ai repris presque tout le code du coupe :D

Comme la complexité c'était surtout d'écrire la logique du formulaire et des tests, mutualiser le code était plus simple.

@tonial tonial force-pushed the alaurent/admin_diags branch from af9af40 to a157ffe Compare January 24, 2025 05:04
@tonial tonial force-pushed the alaurent/admin_diags branch from cfe0617 to 902b4d6 Compare January 24, 2025 13:25
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.

C’est top, merci !

On peut saisir à la fois une SIAE autrice et une organisation prescriptrice. Pourquoi ne pas forcer l’un ou l’autre ?

(ça pourrait idéalement être un Check, à voir à quel point nos données actuelles sont pourries et si le nettoyage est raisonnable (genre set null en se basant sur le kind?))


Si on veut peaufiner, je pense qu’on doit pouvoir indiquer à l’admin has_delete_permission pour les éléments du formset, pour éviter de proposer un checkbox Supprimer ? qui affiche une erreur si on la sélectionne. Mais l’état actuel est acceptable.

@tonial
Copy link
Contributor Author

tonial commented Jan 24, 2025

On peut saisir à la fois une SIAE autrice et une organisation prescriptrice. Pourquoi ne pas forcer l’un ou l’autre ?

tu as raison, je vais mettre un check pour éviter d'utiliser le check constraints du modèle


Pour le le formset, je n'ai pas trouvé comment faire. Je vais regarder un peu plus

@francoisfreitag
Copy link
Contributor

tu as raison, je vais mettre un check pour éviter d'utiliser le check constraints du modèle

Je n’ai pas eu d’erreur en entrant des données invalides, django a accepté de les sauvegarder. Le check ne doit pas fonctionner.

Je regarde.

@francoisfreitag
Copy link
Contributor

C’est bien simple, il n’y a pas de check actuellement. On devrait en rajouter un.

@tonial
Copy link
Contributor Author

tonial commented Jan 24, 2025

Ah ! il y a bien une contrainte db mais uniquement sur les geiq :D

@tonial tonial force-pushed the alaurent/admin_diags branch from 902b4d6 to 1feddbf Compare January 24, 2025 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants