Administration: correction des formulaire d'ajout et de modification de diagnostic via l'admin#5439
Administration: correction des formulaire d'ajout et de modification de diagnostic via l'admin#5439
Conversation
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
cd0ff03 to
de1cff4
Compare
fbb9df6 to
3790fcd
Compare
4ec1a83 to
0eb6867
Compare
There was a problem hiding this comment.
J'ai l'impression qu'il y a plus que la correction du formulaire dans ce commit 🕵️
There was a problem hiding this comment.
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
8e5a711 to
57eccc1
Compare
57eccc1 to
ea1b042
Compare
francoisfreitag
left a comment
There was a problem hiding this comment.
Le fichier de tests donne très envie d’écrire un gros parametrize 😇
itou/eligibility/admin.py
Outdated
| super().clean() | ||
| for line in self.cleaned_data: | ||
| if line["DELETE"] and line["id"].certified: | ||
| for line in getattr(self, "cleaned_data", []): |
There was a problem hiding this comment.
Revert cette ligne ne cause aucun échec de test, j’ai l’impression que c’est inutile?
There was a problem hiding this comment.
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/models/geiq.py
Outdated
| author_geiq = getattr(self, "author_geiq", None) | ||
| job_seeker = getattr(self, "job_seeker", None) | ||
|
|
||
| if author_geiq and self.author_geiq.kind != CompanyKind.GEIQ: |
There was a problem hiding this comment.
Tu peux utiliser self.author_geiq_id pour vérifier si le champ auteur_geiq est rempli sans requête SQL (ni RelatedObjectDoesNotExist).
There was a problem hiding this comment.
idem, je garde l'idée sous la main si jamais l'erreur revient
tests/eligibility/test_admin.py
Outdated
| "selected_administrative_criteria-TOTAL_FORMS": "1", | ||
| "selected_administrative_criteria-0-id": "", | ||
| "selected_administrative_criteria-0-eligibility_diagnosis": "", | ||
| "selected_administrative_criteria-0-administrative_criteria": "1", |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
|
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 🙈 |
|
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 |
ea1b042 to
af9af40
Compare
|
Merci @francoisfreitag pour tous ces commentaires très pertinents. Comme la complexité c'était surtout d'écrire la logique du formulaire et des tests, mutualiser le code était plus simple. |
af9af40 to
a157ffe
Compare
a157ffe to
1c0515b
Compare
1c0515b to
cfe0617
Compare
cfe0617 to
902b4d6
Compare
francoisfreitag
left a comment
There was a problem hiding this comment.
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.
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 |
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. |
|
C’est bien simple, il n’y a pas de check actuellement. On devrait en rajouter un. |
|
Ah ! il y a bien une contrainte db mais uniquement sur les geiq :D |
902b4d6 to
1feddbf
Compare
Ça serait pas mal de mettre la même contrainte pour l'IAE non ? |
|
Ce serait sans doute mieux, mais les données de la DB ne le permettent pas trop pour le moment -> https://gip-inclusion.slack.com/archives/C01AQKD7MAN/p1737986163451139 |
🤔 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_diagnosisoucreate_diagnosissoit mieux.🍰 Comment ?
🚨 À vérifier
🏝️ Comment tester
💻 Captures d'écran