-
Notifications
You must be signed in to change notification settings - Fork 103
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
Feat/permissions blurring #2571
Conversation
0ea5172
to
1d5d72e
Compare
84bc884
to
269ce71
Compare
Le seul test qui ne fonctionne pas ( |
75c4aea
to
8a59c42
Compare
ec3d3d4
to
414b722
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## develop #2571 +/- ##
===========================================
- Coverage 78.57% 69.01% -9.56%
===========================================
Files 84 86 +2
Lines 6907 7542 +635
===========================================
- Hits 5427 5205 -222
- Misses 1480 2337 +857
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
9c74f27
to
4d0c0db
Compare
for perm in permissions: | ||
if perm.has_other_filters_than("SCOPE", "SENSITIVITY"): | ||
continue # unsupported filters | ||
if perm.sensitivity_filter and self.nomenclature_sensitivity.cd_nomenclature != "0": | ||
continue # sensitivity filter denied access, check next permission | ||
if perm.sensitivity_filter and "nomenclature_sensitivity" not in unloaded_objs: |
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.
Si nomenclature_sensitivity
n’est pas chargé, on applique pas le floutage ? Ça me semble un problème. C’est dans quel cas que cette nomenclature n’est pas chargé ? Si trop lourd de rajouter cette jointure, il reste possible d’utiliser l’id_nomenclature de l’obs directement, en récupérant les nomenclatures à partir de leur code (avec du cache pour les récupérer une seule fois évidemment !).
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.
La nomenclature_sensitivity n'est pas chargée lors des requêtes où la jointure n'est pas réalisée et un raiseload est mis, je trouve dommage d'ajouter une jointure juste pour que ça marche. Donc oui peut-être est-ce mieux de passer par les id_nomenclature. mais idem, c'est dommage de définir une fonction avec du cache juste pour ça...
Il faudrait trouver un moyen de voir si on est vraiment dans un contexte de floutage ou pas...
l'observation à la maille de 10km par exemple. | ||
|
||
Comme décrit ci-dessous, un paramètre en configuration a été ajoutée pour donner l'a possibilité d'exclure | ||
toutes les données sensibles plutôt que de les flouter. |
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.
Donner un exemple typique de jeu de permissions : précis données perso/orga + floutée données de tous le monde.
# Careful: do not db.session.commit after these lines !!! | ||
# Because we set manually the synthese attributes | ||
synthese.the_geom_4326 = the_geom | ||
synthese.areas = synthese_for_areas.areas |
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.
On ne peut pas utiliser directement synthese_for_areas
en tant que synthese
? Ça éviterait cette modification de synthese
(outre de commiter, l’auto-flush de sqlalchemy peut faire des surprises). Si pas possible d’utiliser synthese_for_areas
directement, peut-être faire db.session.expunge(synthese)
avant de le modifier.
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.
Oui je suis d'accord avec toi, je vais regarder, je te tiens au courant
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.
De ce que j'ai testé :
- Renvoyer le
synthese_for_areas
fonctionne. Mais faut faire gaffe car ce n'est pas le même objet que plus haut car il n'y a pas toutes les options comme ici : https://github.com/PnX-SI/GeoNature/pull/2571/files/07f33f26036ced488e1f77159a3fa32c8ea517a6#diff-5fb8d19676b01cc7c0b77799d74e25c6a6ff510372180a633a2ecd1682c3c4d9R485 (on pourrait les stocker dans une variable et les réutiliser, à voir) - expunge ne fonctionne pas car cela renvoie l'erreur suivante, je ne comprends pas trop, j'ai l'impression qu'il essaie de loader les relationships (?) :
sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Synthese at 0x7f95fc504400> is not bound to a Session; lazy load operation of attribute 'source' cannot proceed (Background on this error at: http://sqlalche.me/e/13/bhk3)
- Possibilité d'ajouter :
with DB.session.no_autoflush:
pour être sûr mais je comprends qu'assigner une geom à un objet ORM c'est pas ouf...
En discutant avec @bouttier, cette PR nécessite 2 PR sur RefGeo avant d'être mergée : Donc c'est normal que les actions de tests ne fonctionnent pas pour le moment... |
OK, mais les tests ne passent pas non plus sur ces 2 PR ? |
Via migration
50fd60c
to
d0fd4f2
Compare
Use assert_geometries_equal provided by shapely>=2
Of LAreas associated with the synthese
For tests to pass
To add shapely
Remplacé par #2687 qui reprend le travail initié ici |
Implémentation du floutage des données sensibles dans la synthèse en suivant les spécifications détaillées ici #2558
Closes #2558