Development #13709
endpoint select pour csvdatasource
0%
Description
- lignes de bus:
line,stop,schedule A,Rue du Coq,08:00 A,Rue du Coq,09:00 A,Rue du Lendemain,08:15 A,Rue du Lendemain,09:15 B,Place Coin,09:15
- on récupère la liste des lignes avec
/select/?projection=id%3Aligne&projection=text%3Aline&distinct=line&structure=dict
- on récupère la liste des arrêts de la ligne A avec
/select/?projection=id%3Astop&projection=text%3Astop&distinct=stop&where=line%3D%3D%22A%22
- on récupère la liste des lignes avec
- encoder les parcours SVE dans un seul CSV:
ville,type,role,svx,delai La Seyne,Demande Enfance,La Seyne - Service Enfance,sva,86400 La Seyne,Voirie,La Seyne - Service Généraux,svr,86400 Sospel,Voirie,Sospel - Service Généraux,svr,86400
- cela devrait permettre une simplification substantielle d'un workflow gérant de nombreux destinataires, la qualification des demandes en sva/svr et la gestion des délais de traitement pour sva/svr ; cela suppose des fonctions qui n'existent pas encore comme affecté un rôle à une fonction via son nom.
À voir encore comment sont passés les différentes expressions, ou voir si ce ne serait pas plus simple sous forme de requêtes stockées (i.e. pas possible de vraiment requêter librement par le web-service, mais on peut exprimer des requêtes au niveau du connecteur et ça crée des nouveaux endpoints, un par requête).
Fichiers
Demandes liées
Révisions associées
csvdatasource: add support for preset queries (#13709)
csvdatasource: check expressions'syntax in Query form (#13709)
csvdatasource: add tests for csv query management UI (#13709)
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-add-select-endpoint.patch 0001-csvdatasource-add-select-endpoint.patch ajouté
C'est vraiment penser pour les différents projets SVE en fait (mais j'ai repensé aux vieilles demandes de Victor aussi).
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-add-select-endpoint.patch 0001-csvdatasource-add-select-endpoint.patch ajouté
Manque un fichier.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Est-ce que ça doit vraiment être un endpoint séparé, la prise en charge de projection/where/dictinct/order ne pourrait pas aller dans l'endpoint data existant ?
Et les paramètres acceptés par celui-ci seraient réinterprétés pour alimenter le "where". (comme quand il y a eu l'ajout de filtres et que le paramètre "q" a été réinterprété en leurs termes).
Ensuite, il faudra une présentation dans csvdatasource_detail.html
.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Je me suis dit que c'était bien plus simple et moins casse-gueule de développer un nouveau endpoint et de migrer dessus au besoin, et puis surtout je ne suis pas certain que permettre d'envoyer des expressions python soit très judicieux, c'est plus une preuve de concept. Une version plus utile ne permettrait de définir ces requêtes que dans passerelle. En l'état ce nouveau endpoint fait déjà tout ce que fait l'autre (et je peux éventuellement ajouter le support de q
Mis à jour par Frédéric Péters il y a plus de 7 ans
En fait si je comprends mieux, c'était un premier patch développé en local comme proof of concept et posté ici pour inviter l'un ou l'autre à partir de là pour le terminer, requêtes stockées comme tu l'écris, mes commentaires ou pas, etc. ?
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Non je pense que je vais devoir le finir si on veut pas que Mike devienne fou avec les formulaires SVE (mais si quelqu'un a une autre idée pour gérer un workflow à 200 et quelques communes traitantes qu'il le dise), disons que ça ne me dérangerait pas d'avoir des endpoints en béta dans passerelle, le temps qu'on comprenne bien ce qu'on fait là. Là ce qui m'inquiète c'est que si la datasource est publique et que quelqu'un envoie '100**232323233' dans une condition, ça va faire partir le worker en sucette. Donc déjà je n'autorisera ce endpoint qu'à un utilisateur authentifié quelque soit le contrôle d'accès en place. Je vois bien plusieurs itérations se faire, ce endpoint dans un premier temps, et une version avec requêtes purement définies coté passerelle ensuite histoire d'avancer vite.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Et pour être exact ça a été en partie développé dans le train depuis Lyon hier.
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Assigné à mis à Frédéric Péters
Je prends la main pour développer à partir de ce patch, pour avoir rapidement une "version avec requêtes purement définies" comme noté plus haut.
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Fichier 0001-csvdatasource-add-support-for-preset-queries-13709.patch 0001-csvdatasource-add-support-for-preset-queries-13709.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Voilà; j'étais d'abord parti sur une multiplication des modèles (Query, Projection, Filter, etc.) pour au final me limiter à un seul modèle Query, avec dedans des TextField, parce que c'est quand même bien plus simple en terme d'UI derrière.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
J'ai juste un souci avec le changement where -> filters, en fait un seul filtre est possible (le test se fait ensuite sur le premier résultat de la séquence new_row), il ne faudrait donc pas utiliser get_list('filters') mais juste faire stream_expresions([query.filter], ...)
car de toute façon le résultat des autres expressions filters
sont ignorés.
Il manque le fichier csvdatasource/query_form.html.
La possibilité d'écraser les variables issues des lignes du CSV via **kwargs me parait potentiellement gênante, pour limiter ça je verrai plutôt l.224:
row_vars['query'] = kwargs
Ça oblige à faire des query['xxx']
dans les expressions, ce n'est pas mortel.
J'attache un patch avec de la validation des expressions pour le formulaire.
Sinon ack à tout, plus tard comme dans w.c.s. on pourra proposer un module evalutils (pour jouer avec les dates ou les valeurs numérique formatées à la française notamment).
Mis à jour par Frédéric Péters il y a plus de 7 ans
C'est bien sûr sous-performant mais modifié comme ça, on pourrait avoir plusieurs filtres, non ?
filters = query.get_list('filters') if filters: - data = [row for new_row, row in stream_expressions(filters, data, kind='filters') - if new_row[0]] + for clause in filters: + data = [row for new_row, row in stream_expressions([clause], data, kind='filters') + if new_row[0]]
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Fichier 0001-csvdatasource-add-support-for-preset-queries-13709.patch 0001-csvdatasource-add-support-for-preset-queries-13709.patch ajouté
Patch modifié pour inclure le fichier manquant et avoir les paramètres de l'URL dans une variable "query".
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch ajouté
Frédéric Péters a écrit :
C'est bien sûr sous-performant mais modifié comme ça, on pourrait avoir plusieurs filtres, non ?
[...]
Ça rajoute de l'implicite dans le fait qu'il y a un and
entre les filtres, mais si tu veux oui.
J'attache le patch oublié dans mon dernier commentaire.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch ajouté
Mauvais patch, le bon.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch ajouté
Problème de template dans message d'erreur.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch ajouté
Un patch qui marche enfin, aussi dans la vue de détail csvdatasource ces nouveaux endpoints ne sont pas listés (ça n'en donne pas l'URL).
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Fichier 0002-csvdatasource-add-support-for-preset-queries-13709.patch 0002-csvdatasource-add-support-for-preset-queries-13709.patch ajouté
Voilà, patch du milieu modifié pour ajouter la liste des endpoints "query" dans la première partie de la page (et au passage j'ai synchronisé ce template avec le template générique, pour avoir les bons id sur les éléments).
Mis à jour par Frédéric Péters il y a plus de 7 ans
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Fichier Sans titre.png Sans titre.png ajouté
{{ form.non_field_errors }} <pre>{{ form.errors }}</pre>
Je ne sais pas très bien quelle est l'intention ici, d'un formulaire vide je cliquer sur enregistrer et le résultat est désastreux.
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Fichier Sans titre.png Sans titre.png ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch 0001-csvdatasource-check-expressions-syntax-in-Query-form.patch ajouté
Dsl j'ai oublié du debug en développant les clean_*() (j'avais oublié qu'il fallait retourner toujours la valeur maintenant).
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Fichier 0001-csvdatasource-add-tests-for-csv-query-management-UI-.patch 0001-csvdatasource-add-tests-for-csv-query-management-UI-.patch ajouté
Parfait, et pour la route un test de la partie UI.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Ack, je mettrai à jour le sictiam pour que Mike béta-test tout ça.
Mis à jour par Frédéric Péters il y a plus de 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit 282bd2cb6e2309a749315ae9c4fe3441f2a75d6a Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Oct 24 23:40:13 2016 +0200 csvdatasource: add tests for csv query management UI (#13709) commit 4b22a9fded81f2d195c9ee3761a10631e04b3b02 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Oct 24 21:11:01 2016 +0200 csvdatasource: check expressions'syntax in Query form (#13709) commit 620fea3391fec06c6e2c58ba5a0b1460a3c63a1d Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Oct 24 15:41:46 2016 +0200 csvdatasource: add support for preset queries (#13709) commit 056437bf1c68a1be82192238583ba93d7d3884ca Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Oct 21 10:16:15 2016 +0200 csvdatasource: add select endpoint (#13709)
Mis à jour par Josué Kouka il y a environ 7 ans
- Lié à Development #11415: csv datasource: ajouter la possibilité de désigner une colonne comme id ou text ajouté
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Statut changé de Résolu (à déployer) à Fermé
csvdatasource: add select endpoint (#13709)