Projet

Général

Profil

Development #39612

arcgis: supporter des paramètres à la requête where

Ajouté par Benjamin Dauvergne il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
06 février 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

La requête where est une expression SQL, le souci est qu'il faudrait gérer le quoting des chaînes SQL (double des simple quote) et l'interpolation pour bien faire, i.e. pour obtenir

WHERE x LIKE 'truc''muche'

il faudrait pouvoir passer

where=x+LIKE+%25s&param=truc'muche

et calculer le where via une expression du genre:

format_sql(request.GET['where'], *request.GET.getlist('param'))

Fichiers


Demandes liées

Lié à Passerelle - Support #39622: arcgis: pouvoir définir des requêtesFermé07 février 2020

Actions
Lié à Passerelle - Development #27782: arcgis : ajouter un système de map-service-query pré-remplie Fermé06 novembre 2018

Actions

Historique

#2

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Description mis à jour (diff)
#4

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Sujet changé de arcgis: supporter des paramètre à la requête where à arcgis: supporter des paramètres à la requête where
#6

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Assigné à mis à Benjamin Dauvergne
#7

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

#8

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

Ça s'utilise comme ceci :

/arcgis/test/mapservice-query?where=adress+LIKE+%s&where-param=RUE+D'ANNAM

si on utlise %d c'est implicitement converti en entier, j'ai pas fait les float si vous pensez que ça pourrait être utile je le ferai aussi.

#9

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

Benjamin Dauvergne a écrit :

Ça s'utilise comme ceci :

[...]

si on utlise %d c'est implicitement converti en entier, j'ai pas fait les float si vous pensez que ça pourrait être utile je le ferai aussi.

À noter que ça va péter toutes les clauses where qui utiliseraient actuellement un % dans leur expression (genre LIKE '%whatever%'). Si c'est gênant je peux aussi prévoir un nouveau paramètre genre where-interpolate qui prendrait la place de where quand il est là.

#10

Mis à jour par Thomas Noël il y a environ 4 ans

Beaucoup d'existant sur Cannes https://demarches-mairie-de-cannes.test-demarches.sictiam.fr/backoffice/workflows/data-sources/ et pas mal de where dans le lot, pour l'interrogation du cadastre... et aucune envie de jouer là dedans :

42:    {{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=adresse%20like%20%27%{{form_var_recherche_adresse|default:"XYZXYZ"|upper|urlencode}}%%27&template=%7B%7Battributes.adresse%7Csafe%7D%7D+—+%7B%7Battributes.codepost|default:""%7D%7D+%7B%7Battributes.sectpost|default:""%7D%7D&id_template=%7B%7Battributes.ident%7D%7D&orderByFields=nomvoie,numero_num&full=on

45:    {{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=1&folder=geocannes&service=GEOCANNES_RU&where=id_parc=%27{% if "adresse" in form_var_methode %}{{ form_var_parcelle_adresse }}{% elif "cart" in form_var_methode %}{{ form_var_parcelle_carte }}{% else %}{{ form_var_parcelle_manuelle }}{% endif %}%27

49:    {% if form_var_num_voie %}{% load l10n %}{{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=numero_num%20=%20{{form_var_num_voie}}%20and%20adresse%20like%20%27%{{form_var_voie}}%%27&template=%7B%7Battributes.quartier%7D%7D&full=on{% else %}{% load l10n %}{{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=numero_num%20=%200%20and%20adresse%20like%20%27%{{form_var_voie}}%%27&template=%7B%7Battributes.quartier%7D%7D&full=on{% endif %}

50:    {{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=numero_num%20=%200%20AND%20adresse%20like%20%27%{{form_var_recherche_adresse|default:"XYZXYZ"|upper}}%%27&template=%7B%7Battributes.nomvoie%7Csafe%7D%7D&orderByFields=nomvoie&full=on

51:    {% if form_var_num_voie %}{% load l10n %}{{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=numero_num%20=%20{{form_var_num_voie}}%20and%20adresse%20like%20%27%{{form_var_voie}}%%27&template=%7B%7Battributes.secteur%7D%7D&full=on{% else %}{% load l10n %}{{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=numero_num%20=%200%20and%20adresse%20like%20%27%{{form_var_voie}}%%27&template=%7B%7Battributes.secteur%7D%7D&full=on{% endif %}

52:    {{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=adresse%20like%20%27%{{form_var_voie}}%%27&template=%7B%7Battributes.numero_num%7D%7D&orderByFields=numero_num&full=on

53:    {{ passerelle_url }}arcgis/geocannes/mapservice-query?layer=0&folder=geocannes&service=GEOCANNES_Adresse_reference&where=adresse%20like%20%27%{{form_var_recherche_adresse|default:"XYZXYZ"|upper}}%%27&template=%7B%7Battributes.adresse%7D%7D+—+%7B%7Battributes.quartier%7D%7D+—+%7B%7Battributes.codepost|default:""%7D%7D+%7B%7Battributes.sectpost|default:""%7D%7D&id_template=%7B%7Battributes.ident%7D%7D&orderByFields=nomvoie,numero_num&full=on
#11

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

Ça tombe bien c'est pour Cannes que c'est développé.

#12

Mis à jour par Thomas Noël il y a environ 4 ans

Benjamin Dauvergne a écrit :

Ça tombe bien c'est pour Cannes que c'est développé.

Arf. Et donc pour les where là, c'est bon ? J'ai du mal.

#13

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

Thomas Noël a écrit :

Benjamin Dauvergne a écrit :

Ça tombe bien c'est pour Cannes que c'est développé.

Arf. Et donc pour les where là, c'est bon ? J'ai du mal.

Non justement le but c'est de tous les réécrire proprement, là ça ne marche pas avec les apostrophes (ticket lié).

PS: maintenant avec une nuit de réflexion je me dis que la bonne solution ce serait plutôt un système de query comme csvdatasource, ça éviterait aussi de passer des bouts de template Django illisibles dans l'URL.

#14

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Lié à Support #39622: arcgis: pouvoir définir des requêtes ajouté
#15

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Lié à Development #27782: arcgis : ajouter un système de map-service-query pré-remplie ajouté
#16

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Statut changé de Solution proposée à Rejeté

Formats disponibles : Atom PDF