-
Notifications
You must be signed in to change notification settings - Fork 25
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
base: master
Are you sure you want to change the base?
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.
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 🕵️
There was a problem hiding this comment.
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
8e5a711
to
57eccc1
Compare
57eccc1
to
ea1b042
Compare
There was a problem hiding this 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/admin.py
Outdated
@@ -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", []): |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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/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.
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
).
There was a problem hiding this comment.
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
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.
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.
There was a problem hiding this comment.
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
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
There was a problem hiding this 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.
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
🤔 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
oucreate_diagnosis
soit mieux.🍰 Comment ?
🚨 À vérifier
🏝️ Comment tester
💻 Captures d'écran