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

Ajouter un signalement sur une occurrence pour la validation #1817

Merged
merged 12 commits into from
Apr 5, 2022
Merged

Ajouter un signalement sur une occurrence pour la validation #1817

merged 12 commits into from
Apr 5, 2022

Conversation

Gaetanbrl
Copy link
Contributor

@Gaetanbrl Gaetanbrl commented Mar 31, 2022

Ref. issue #1750

Cette contribution a été réalisée selon les besoins de picardie-nature @jbdesbas

Cette proposition de PR permet, depuis le module “Synthèse”, de pouvoir signaler une
observation semblant erronée ou suspecte.

Une observation aberrantes / suspecte pourra alors être rapidement rendue visible via un bouton signaler et un formulaire afin d'ajouter un commentaire. Les observations signalées sont ensuite mise en évidence dans la liste des occurrences de la VALIDATION et recherchable via un filtre avancé "Est signalé".

Cette fonctionnalité est optionnelle car visible ou non dans les modules SYNTHESE, VALIDATION ou dans aucun des deux selon les détails fourni dans l'issue 1750.

Les éléments suivants on été modifiés ou rajoutés :

  • Nouvelle route dédiée à la suppression d'un signalement (uniquement si validateur)
  • Ajout d'un bouton Signaler pour ouvrir ou fermer le formulaire (ou le détail du signalement)
  • Ajout d'un filtre has_alert pour filtrer la liste de validation sur les occurrences qui ont un signalement
  • Ajout d'un drapeau dans la liste pour indiquer qu'une occurrence contient un signalement (tableau VALIDATION uniquement)
  • Test backend
  • squash
  • Configuration (rendre optionnel)

Tout le monde peut signaler une occurrence, seuls les validateurs peuvent la supprimer.

Toutes remarques sont les bienvenus.

Aperçu

pr-alert

@Gaetanbrl Gaetanbrl changed the title Feature 1750 fix Ajouter un signalement sur une occurrence pour la validation Mar 31, 2022
@codecov
Copy link

codecov bot commented Mar 31, 2022

Codecov Report

Merging #1817 (fed19a5) into develop (196a911) will decrease coverage by 0.07%.
The diff coverage is 64.78%.

@@             Coverage Diff             @@
##           develop    #1817      +/-   ##
===========================================
- Coverage    54.23%   54.15%   -0.08%     
===========================================
  Files           76       76              
  Lines         7309     7303       -6     
===========================================
- Hits          3964     3955       -9     
- Misses        3345     3348       +3     
Flag Coverage Δ
pytest 54.15% <64.78%> (-0.08%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
backend/geonature/core/admin/admin.py 77.77% <ø> (ø)
backend/geonature/core/auth/routes.py 21.64% <0.00%> (ø)
backend/geonature/core/command/__main__.py 0.00% <0.00%> (ø)
backend/geonature/core/command/create_gn_module.py 0.00% <0.00%> (ø)
backend/geonature/core/command/main.py 0.00% <0.00%> (ø)
backend/geonature/core/gn_commons/file_manager.py 27.27% <ø> (ø)
backend/geonature/core/gn_commons/medias/routes.py 35.38% <ø> (ø)
backend/geonature/core/gn_commons/repositories.py 19.16% <0.00%> (ø)
...end/geonature/core/gn_commons/validation/routes.py 60.86% <ø> (ø)
backend/geonature/core/gn_meta/mtd/mtd_utils.py 14.74% <0.00%> (ø)
... and 63 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update dca1c97...fed19a5. Read the comment docs.

backend/geonature/core/gn_synthese/routes.py Outdated Show resolved Hide resolved
backend/geonature/core/gn_synthese/routes.py Outdated Show resolved Hide resolved
backend/geonature/core/gn_synthese/routes.py Outdated Show resolved Hide resolved
@camillemonchicourt
Copy link
Member

OK quelques questions :

  • Peut-on consulter le commentaire de signalement sur la fiche info d'une observation ?
  • Que se passe t-il si une personne veut signaler une observation déjà signalée ? Elle ajoute son commentaire de signalement ? Ou modifie celui existant saisi par un autre utilisateur ?
  • Il est indiqué que seulement les validateurs peuvent supprimer un signalement. Comment sait-on qu'un utilisateur est validateur ?
  • Et où se fait cette suppression ?

Merci.

@Gaetanbrl
Copy link
Contributor Author

@camillemonchicourt

Peut-on consulter le commentaire de signalement sur la fiche info d'une observation ?

Oui car le signalement peut être ajouté / enlevé (par un validateur) / consulté dans la fiche info (composant alertInfoModule dans geonature/frontend/src/app/shared).

J'ai créé un component alertInfoModule qui est dans le composant partagé SyntheseInfoObsComponent. Ca permet de disposer consulter / ajouter le signalement pour un NON validateur dans le module SYNTHESE.

Que se passe t-il si une personne veut signaler une observation déjà signalée ?

Une observation => 1 signalement. Plusieurs signalement ne semblent pas être nécessaires car si une observation a déjà été signalée, on considère que le validateur va de toute façon vérifier l'observation.

La discussion peut compléter un besoin d'information mais c'est complémentaire et ne répond pas au besoin de modifier le signalement par l'auteur lui-même.

Tu vois un besoin supplémentaire de ce côté ? Idem, @jbdesbas ?

Il est indiqué que seulement les validateurs peuvent supprimer un signalement. Comment sait-on qu'un utilisateur est validateur ?

La détection du CRUVED par le front ne fait pas ce rôle ?

this.canChangeAlert = this.userCruved?.V && this.userCruved?.V > 0 && this.alert?.id_report;

https://github.com/PnX-SI/GeoNature/pull/1817/files#diff-19b9250b7518cdd1135877cbb9d3e5f36e154cb4b9982db32781c16ef9329279R54

Il y a aussi une règle du back :

@permissions.check_cruved_scope("V", get_scope=True, module_code="VALIDATION")

https://github.com/PnX-SI/GeoNature/pull/1817/files#diff-5fb8d19676b01cc7c0b77799d74e25c6a6ff510372180a633a2ecd1682c3c4d9R1078

Mais j'ai un doute sur cette règle (question déjà posée dans la PR discussion, comment gérer module_code SYHNTHESE et VALIDATION ?).

Et où se fait cette suppression ?

Pas certain de comprendre ? (voir test de la PR directement ou le gif).
La suppression se fait au clic sur le bouton dans la toolbar qui va ensuite afficher le formulaire d'ajout ou suppression (si possible).

@jbdesbas
Copy link
Contributor

jbdesbas commented Apr 1, 2022

OK pour moi.
C'est l'accès à l'observation via la module de validation qui permet de définir un utilisateur comme validateur. Seul le validateur peut enlever un signalement (après modification du statut de validation si le signalement est jugé pertinent).

@Gaetanbrl
Copy link
Contributor Author

@bouttier merci des retours de revue, les travaux sont en cours je n'ai pas refait de modifications depuis ce matin :)

@Gaetanbrl
Copy link
Contributor Author

Du coup ceci est à priori obsolète puisque les infos sont retourné directement, non ?

@jbdesbas oui travaux en cours, comme indiqué je fait les modifications (front / route) dès que possible pour moi :)

@camillemonchicourt
Copy link
Member

OK merci pour les réponses.

Pour savoir si un utilisateur est validateur, en effet il faudrait peut-être plutôt vérifier son R sur le module Validation, car le V du CRUVED n'a pas un usage ni un rôle clair actuellement dans GeoNature.

@Gaetanbrl
Copy link
Contributor Author

Ok donc si on peut lire la validaition ==> On est validateurs (sinon on voit pas le module) ==> R suffit.
Ca marche je modifie.

@Gaetanbrl
Copy link
Contributor Author

Gaetanbrl commented Apr 1, 2022

@bouttier

Du coup ceci est à priori obsolète puisque les infos sont retourné directement, non ?

J'ai toutefois besoin d'appeler l'alert (et non toutes les données de Synthese) lors de la création d'une alert puisque je dois récupérer l'id_report (automatiquement rajouté en base à la création) pour une suppression ultérieur (si on ajoute et supprime directement par exemple).

@Gaetanbrl
Copy link
Contributor Author

Gaetanbrl commented Apr 1, 2022

@bouttier @TheoLechemia

Pour la Synthese et la récupération des infos de reports, étant donné qu'on a un get_or_404 (>ici<) j'ai simplement rajouté les champs qui vont biens dans le as_geofeature :

https://github.com/PnX-SI/GeoNature/pull/1817/files#diff-5fb8d19676b01cc7c0b77799d74e25c6a6ff510372180a633a2ecd1682c3c4d9R274

Faut-il donc faire pareil que pour la route VALIDATION ?

... En rajoutant :

.options(selectinload(Synthese.reports).joinedload(TReport.report_type))

Merci pour vos réponses.

@bouttier
Copy link
Contributor

bouttier commented Apr 4, 2022

@bouttier @TheoLechemia

Pour la Synthese et la récupération des infos de reports, étant donné qu'on a un get_or_404 (>ici<) j'ai simplement rajouté les champs qui vont biens dans le as_geofeature :

https://github.com/PnX-SI/GeoNature/pull/1817/files#diff-5fb8d19676b01cc7c0b77799d74e25c6a6ff510372180a633a2ecd1682c3c4d9R274

Faut-il donc faire pareil que pour la route VALIDATION ?

... En rajoutant :

.options(selectinload(Synthese.reports).joinedload(TReport.report_type))

Merci pour vos réponses.

Non c’est inutile de rajouter le selectinload. Comme ici on sérialise une unique observation, une seconde requête select correspondant à la stratégie de chargement lazyload convient tout-à-fait.
Cependant, il peut être intéressant de joindre les types qui sinon déclencherons une requête select pour chaque report, donc au final :

.options(lazyload(Synthese.reports).joinedload(TReport.report_type))

@Gaetanbrl
Copy link
Contributor Author

Gaetanbrl commented Apr 4, 2022

  • Branche rebase depuis develop

@Gaetanbrl
Copy link
Contributor Author

  • Squash commits

@Gaetanbrl
Copy link
Contributor Author

Gros conflits sur cette PR suite aux derniers commits.....

config to activate signalement or not by modules

use contains_eager instead joineload to filter query

user alertInfoModule with shared synthese UI

better display for signalement delete btn

only validator can delete alert

Specific delete rule for validator and change alert UI

delete useless joinedload

Fisplay alert flag in valid synthese list

Allow to filter validation list by alert

create protected delete alert route for validator only

More Alert backend tests
Clean useless code

joinedload come back

delete print

join report to Synthese on validaiton get_synthese_data

append report to synthese only if required

optimal report management with UI

avoid to many report call

join report only if required, delete useless route

force replace by lazyload

remove specific delete alert route and test

use correct has_instance_permission def name

fix backend test
@Gaetanbrl
Copy link
Contributor Author

Gaetanbrl commented Apr 4, 2022

  • 2ème rebase depuis develop

@Gaetanbrl
Copy link
Contributor Author

Gaetanbrl commented Apr 4, 2022

  • Problème avec une dépendance + visiblement pylint

refresh VALIDATION obs list on modal close

Clean useless code

joinedload come back

delete print

join report to Synthese on validaiton get_synthese_data

append report to synthese only if required

optimal report management with UI

avoid to many report call

join report only if required, delete useless route

force replace by lazyload

remove specific delete alert route and test

use correct has_instance_permission def name

fix backend test

VSCode forgotten rebase diff push

update

delete weird submodule folder

black prettier

frontend prettier
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.

4 participants