Development #10686
Possibilité de filtrer sur des critères colonne d'un csv
0%
Description
Je reprends une discussion entamée dans des mails:
Fred : Il est déjà possible de filtrer les sources CSV, en passant un paramètre ?q=whatever, il s'agirait d'autre chose ?
Thomas : Tu envoies un CSV genre : id, text, secteur qui détaille les écoles avec pour chacun leur secteur, et tu veux permettre de n'afficher que les écoles d'un certain secteur, il faudrait avoir un « filter_secteur=13 » ou quelque chose dans ce gout-la. Ca existait sur l'ancien module CSV, cf http://git.entrouvert.org/passerelle.git/tree/passerelle/datasources/models.py#n25
Benjamin : IMHO, il faut 3 trucs: - pouvoir spécifier quelles colonnes servent d'id et de text et quelles colonnes supplémentaire on souhaite (si je demande les secteurs je ne veux pas voir le nom des écoles dans mes structured_data) - supprimer les doublons d'id (je dois pouvoir extraire la liste des secteurs d'une liste des écoles, sans que ça me sorte 2 fois le même secteur, un SELECT DISTINCT quoi) - pouvoir filtrer sur n'importe quelle colonne Avec ça on doit pouvoir faire facilement des listes déroulantes imbriquées sans avoir besoin d'autant de CSV que de niveaux.
Et donc le cas d'usage est bien celui de pouvoir indiquer un filtre par colonne.
J'ai une colonne id, text, secteur, bus
Je veux filtrer la liste en fonction du secteur ou de la ligne de bus et j'envoie à passerelle
passerelle.org/transports/liste?secteur=MONSECTEUR
Et si je peux cumuler c'est encore mieux
passerelle.org/transports/liste?secteur=MONSECTEUR&bus=LIGNE02
Fichiers
Révisions associées
Historique
Mis à jour par Victor Claudet il y a environ 8 ans
- Assigné à mis à Frédéric Péters
J'assigne, si ça convient pas ça permettra de relancer la discussion :-)
Mis à jour par Frédéric Péters il y a environ 8 ans
- Assigné à changé de Frédéric Péters à Serghei Mihai (congés, retour 15/05)
J'assigne à Serghei pour lancer la discussion.
Mis à jour par Frédéric Péters il y a environ 8 ans
- Fichier 0001-csv-add-possibility-of-filtering-any-column-10686.patch 0001-csv-add-possibility-of-filtering-any-column-10686.patch ajouté
Ma perspective, c'est qu'on peut faire à nouveau un truc ad hoc facilement. (très facilement, hop, attaché). (attention, ça compare avec "criteria in value", et pas "criteria == value", c'est peut-être pas désirable, mais ça se change facilement).
Mais à terme, pour arriver à la suggestion de Benjamin, j'aimerais bien qu'on arrive à réfléchir sur Passerelle, pour partager des éléments de connecteur en connecteur. En effet je vais maintenant pouvoir faire ?insee=34012 dans le connecteur CSV mais ça n'aura pas d'impact sur le endpoint "liste des rues" de GDC, mettons. Je me dis qu'on doit arriver à avoir un code de endpoint "liste de données" qui ressemble au queryset django : j'aurais ma source "CSV" (code spécifique) et dessus ma vue endpoint générique, qui y appelerait un .filter(key=value), et de quoi assurer un limit=10, un offset=30, un "order by"=name, etc.
La source pourrait soit implémenter nativement ces filtres (filter, limit, offset, order_by, distinct…), soit il y aurait fallback vers du code générique (qui récupère le tout et fait le job en python).
Mis à jour par Frédéric Péters il y a environ 8 ans
- Fichier 0001-csv-add-possibility-of-filtering-any-column-10686.patch 0001-csv-add-possibility-of-filtering-any-column-10686.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Patch qui traite différemment le paramètre "q", pour faire un "in" sur la colonne "text". Les autres filtres vérifiant l'égalité.
Mis à jour par Victor Claudet il y a environ 8 ans
- Priorité changé de Normal à Haut
relecture ok ? on pousse en recette ?
Mis à jour par Frédéric Péters il y a environ 8 ans
Victor Claudet a écrit :
relecture ok ? on pousse en recette ?
Pas encore de relecture (ça apparaitrait dans le ticket).
Mis à jour par Frédéric Péters il y a environ 8 ans
- Statut changé de En cours à Résolu (à déployer)
commit b71ec791e2ebb469855d2a24451a0a867fa00293 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Apr 29 07:39:26 2016 +0200 csv: add possibility of filtering any column (#10686)
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans
- Statut changé de Résolu (à déployer) à Fermé
csv: add possibility of filtering any column (#10686)