Projet

Général

Profil

Development #10686

Possibilité de filtrer sur des critères colonne d'un csv

Ajouté par Victor Claudet il y a environ 8 ans. Mis à jour il y a environ 7 ans.

Statut:
Fermé
Priorité:
Haut
Version cible:
-
Début:
18 avril 2016
Echéance:
06 mai 2016
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision b71ec791 (diff)
Ajouté par Frédéric Péters il y a environ 8 ans

csv: add possibility of filtering any column (#10686)

Historique

#1

Mis à jour par Victor Claudet il y a environ 8 ans

  • Echéance mis à 06 mai 2016
#2

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 :-)

#3

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.

#4

Mis à jour par Frédéric Péters il y a environ 8 ans

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).

#5

Mis à jour par Frédéric Péters il y a environ 8 ans

Patch qui traite différemment le paramètre "q", pour faire un "in" sur la colonne "text". Les autres filtres vérifiant l'égalité.

#6

Mis à jour par Victor Claudet il y a environ 8 ans

  • Priorité changé de Normal à Haut

relecture ok ? on pousse en recette ?

#7

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).

#9

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)
#10

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF