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

Visibilite d'une fiche #265

Merged
merged 1 commit into from
Oct 8, 2024
Merged

Visibilite d'une fiche #265

merged 1 commit into from
Oct 8, 2024

Conversation

alanzirek
Copy link
Collaborator

@alanzirek alanzirek commented Sep 17, 2024

Cette PR ajoute la notion de visibilité d'une fiche (brouillon, local, national).

Modèle :

  • Ajout d'unTextChoices Visibilite pour gérer les valeurs : brouillon, local, et national. (core/models.py)
  • Ajout du mixinAllowVisibiliteMixin pour gérer et ajouter à tout type de fiche la logique de visibilité. (core/mixins.py)
  • Ajout de méthodes dans le modèle FicheDetection pour gérer la mise à jour de la visibilité ou l'accès à une fiche détection. (can_update_visibilite et can_user_access dans sv/models.py/FicheDetection/)

Form :

  • Ajout d'un formulaire FicheDetectionVisibiliteUpdateForm pour permettre aux agents de mettre à jour la visibilité d'une fiche détection. (sv/forms.py)

Templates :

  • Ajout de la classe DSFRRadioButton et du template correspondant pour intégrer le radio button du DSFR. (core/fields.py, core/templates/forms/dsfr_radio_btn.html)
  • Affichage du statut de visibilité sous forme de badge sur la page de détail du formulaire de détection. (sv/templates/sv/fichedetection_detail.html)
  • Ajout d'une modale pour mettre à jour la visibilité dans la page de détail d'une fiche détection. (sv/templates/sv/_fichedetection_update_visibilite_modal.html)
  • Ajout d'un filtre de template get_item pour récupérer la description d'une visibilité à partir de sa valeur (core/templatetags/get_item.py)

Tests :

  • Modification de la fixture fiche_detection_bakery pour que le créateur de chaque fiche détection soit lié au user connecté et donc puisse accéder à la fiche (cf. commentaire)

Migration de la base de données :

  • Ajout d'un script de migration pour inclure le nouveau champ visibilite dans le modèle FicheDetection et définir des valeurs par défaut (brouillon) pour les enregistrements existants. (sv/migrations/0022_fichedetection_visibilite.py)

@alanzirek alanzirek self-assigned this Sep 17, 2024
@alanzirek alanzirek linked an issue Sep 17, 2024 that may be closed by this pull request
@alanzirek alanzirek force-pushed the visibilite branch 3 times, most recently from 4131d41 to 84663b4 Compare September 24, 2024 09:24
@alanzirek alanzirek force-pushed the visibilite branch 4 times, most recently from 44b2ff3 to 02c51b4 Compare September 25, 2024 09:19
Copy link
Collaborator

@Anto59290 Anto59290 left a comment

Choose a reason for hiding this comment

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

Globalement j'ai trouvé la PR assez grosse pour le résultat buissiness attendu. Peut être il aurait fallut couper en 2 scopes (qui peut changer l'état et qui peut voir son des problèmes séparés non ?) ?

core/managers.py Outdated Show resolved Hide resolved
core/models.py Outdated Show resolved Hide resolved
sv/forms.py Outdated Show resolved Hide resolved
sv/forms.py Outdated Show resolved Hide resolved
def _fiche_detection_bakery():
etat = Etat.objects.get(id=Etat.get_etat_initial())
return baker.make(FicheDetection, _fill_optional=True, etat=etat)
return baker.make(
FicheDetection, _fill_optional=True, etat=etat, createur=mocked_authentification_user.agent.structure
Copy link
Collaborator

Choose a reason for hiding this comment

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

Cela va impliquer par défaut que toutes les fiches que l'on utilise vont être créé par le user de test, est ce que c'est vraiment ce que l'on veut ? Pourquoi ne pas personaliser le comportement au niveau du test voulu directement ?

Copy link
Collaborator Author

@alanzirek alanzirek Oct 2, 2024

Choose a reason for hiding this comment

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

J'ai opté pour cette solution car avec l'ajout de la visibilité d'une fiche, cela impact beaucoup de tests.
Étant donné que dans la plupart des tests une fiche détection est en visibilité brouillon (valeur par défaut), il faut que le user soit de la même structure pour y accéder et donc exécuter les tests.
J'ai préféré faire l'inverse (modifier la structure du user si besoin) pour avoir moins de tests à modifier.
Est-ce ok pour toi ?

sv/tests/test_fichedetection_visibilite.py Show resolved Hide resolved
sv/views.py Outdated Show resolved Hide resolved
sv/views.py Outdated Show resolved Hide resolved
sv/views.py Show resolved Hide resolved
@alanzirek
Copy link
Collaborator Author

Globalement j'ai trouvé la PR assez grosse pour le résultat buissiness attendu. Peut être il aurait fallut couper en 2 scopes (qui peut changer l'état et qui peut voir son des problèmes séparés non ?) ?

Oui je suis d'accord, je m'en suis rendu compte tardivement, mais ceci étant les 2 scopes sont liés.

@alanzirek alanzirek force-pushed the visibilite branch 2 times, most recently from 813ea84 to 2eda949 Compare October 2, 2024 09:56
@alanzirek alanzirek force-pushed the visibilite branch 5 times, most recently from 33cccf0 to 20754ae Compare October 8, 2024 10:07
Modèle :
- Ajout d'unTextChoices Visibilite pour gérer les valeurs : brouillon, local, et national. (core/models.py)
- Ajout du mixinAllowVisibiliteMixin pour gérer et ajouter à tout type de fiche la logique de visibilité. (core/mixins.py)
- Ajout de méthodes dans le modèle FicheDetection pour gérer la mise à jour de la visibilité ou l'accès à une fiche détection. (can_update_visibilite et can_user_access dans sv/models.py/FicheDetection/)

Form :
- Ajout d'un formulaire FicheDetectionVisibiliteUpdateForm pour permettre aux agents de mettre à jour la visibilité d'une fiche détection. (sv/forms.py)

Templates :
- Ajout Radio Button DSFR: Ajout de la classe DSFRRadioButton et du template correspondant pour intégrer le radio button du DSFR. (core/fields.py, core/templates/forms/dsfr_radio_btn.html)
- Badge: Affichage du statut de visibilité sous forme de badge sur la page de détail du formulaire de détection. (sv/templates/sv/fichedetection_detail.html)
- Modal: Ajout d'une modale pour mettre à jour la visibilité dans la page de détail d'une fiche détection. (sv/templates/sv/_fichedetection_update_visibilite_modal.html)
- Filtre de template: Ajout d'un filtre de template get_item pour récupérer la description d'une visibilité à partir de sa valeur (core/templatetags/get_item.py)

Migration de la base de données:
- Ajout d'un script de migration pour inclure le nouveau champ visibilite dans le modèle FicheDetection et définir des valeurs par défaut (brouillon) pour les enregistrements existants. (sv/migrations/0022_fichedetection_visibilite.py)
@alanzirek alanzirek merged commit db1d903 into main Oct 8, 2024
5 checks passed
@alanzirek alanzirek deleted the visibilite branch October 8, 2024 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Visibilité d'une fiche détection
2 participants