statistics: allow filtering by items field inside block (#75573) #205

Merged
vdeniaud merged 1 commits from wip/75573-statistiques-erreur-dans-set-aut into main 2023-04-20 09:47:40 +02:00
Owner
No description provided.
vdeniaud force-pushed wip/75573-statistiques-erreur-dans-set-aut from d1aea6672d to 96f1679131 2023-03-28 12:31:37 +02:00 Compare
vdeniaud force-pushed wip/75573-statistiques-erreur-dans-set-aut from 96f1679131 to 88f9d2ea7a 2023-03-28 14:16:05 +02:00 Compare
vdeniaud changed title from WIP: statistics: allow filtering by items field inside block (#75573) to statistics: allow filtering by items field inside block (#75573) 2023-03-28 14:20:47 +02:00
Author
Owner

Ici le bug c'est que les champs liste à choix multiple ne sont pas utilisables comme filtres ad0f4413d3 mais qu'on propose quand même la case à cocher « statistiques » en BO, et comme situation pas prévue crash.

Je suis généreux, plutôt que de cacher cette case je lève la limitation, hop.

La correction de la trace c'est la modif à wcs/formdata.py mais ça demande ensuite quelques adaptations car on utilise le même code que les filtres des vues de traitement, qui ne permet pas de filtrer sur le champ items d'un bloc (j'imagine ça compliqué quand on doit aller fouiller dans formdata.data, mais ici il n'y a pas de spécificité puisqu'on a une colonne normée dédiée statistics_data).

Ici le bug c'est que les champs liste à choix multiple ne sont pas utilisables comme filtres https://git.entrouvert.org/entrouvert/wcs/commit/ad0f4413d3a5084888e92551ca09ed16fe179cad mais qu'on propose quand même la case à cocher « statistiques » en BO, et comme situation pas prévue crash. Je suis généreux, plutôt que de cacher cette case je lève la limitation, hop. La correction de la trace c'est la modif à wcs/formdata.py mais ça demande ensuite quelques adaptations car on utilise le même code que les filtres des vues de traitement, qui ne permet pas de filtrer sur le champ items d'un bloc (j'imagine ça compliqué quand on doit aller fouiller dans formdata.data, mais ici il n'y a pas de spécificité puisqu'on a une colonne normée dédiée statistics_data).
vdeniaud added 1 commit 2023-04-11 10:43:26 +02:00
fpeters approved these changes 2023-04-20 08:04:29 +02:00
@ -995,3 +995,3 @@
# {"data": [{"FOOBAR": "value1"}, {"FOOBAR": "value2}]}
# → ["value1", "value2"}
field1 = "jsonb_array_elements(%s->'data')->> '%s'" % (
field1 = "jsonb_array_elements(%s->'data')-> '%s'" % (
Owner

Ce bout me reste mystérieux et à chaque fois j'abandonne la relecture quand j'arrive ici :/

(mais Pierre m'a dit que c'était ok donc je vais valider)

Ce bout me reste mystérieux et à chaque fois j'abandonne la relecture quand j'arrive ici :/ (mais Pierre m'a dit que c'était ok donc je vais valider)
Author
Owner

Ma compréhension c'est que ->> sort toujours l'élément du JSON sous forme de string, or la valeur d'un ItemsField c'est une liste, donc ça sort n'imp genre un truc qui vaut "['a', 'b']", enlever un chevron donne bien ['a', 'b'] une vraie liste.

Là où ça pourrait poser problème c'est si il y avait genre des entiers dans le JSON, et que derrière du code qui attendait des string reçoit maintenant des entiers. Mais je crois qu'il y a suffisamment de cast python str() explicites partout que ça a peu de chance d'arriver (confiance aux tests, aussi).

Ma compréhension c'est que `->>` sort toujours l'élément du JSON sous forme de string, or la valeur d'un ItemsField c'est une liste, donc ça sort n'imp genre un truc qui vaut `"['a', 'b']"`, enlever un chevron donne bien `['a', 'b']` une vraie liste. Là où ça pourrait poser problème c'est si il y avait genre des entiers dans le JSON, et que derrière du code qui attendait des string reçoit maintenant des entiers. Mais je crois qu'il y a suffisamment de cast python str() explicites partout que ça a peu de chance d'arriver (confiance aux tests, aussi).
vdeniaud merged commit 55b1be9b4f into main 2023-04-20 09:47:40 +02:00
vdeniaud deleted branch wip/75573-statistiques-erreur-dans-set-aut 2023-04-20 09:47:40 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#205
No description provided.