Development #59224
Form/Carddata listing & api - filtre qui n'existe pas
0%
Description
Exemple, une requête sur:
https://wcs.dev.publik.love/api/cards/<slug>/list?filter-foobar=42
Où le champ qui aurait pour varname "foobar" n'existe pas.
Actuellement, tous les carddata sont renvoyés, le filtre est ignoré.
Ca pourrait poser problème dans combo, avec les cellules contenu d'une fiche (avec une liste d'id renseignées avec une expression en cards|objects par exemple); on se retrouverait avec toutes les fiches affichées.
Est-ce qu'il serait envisageable de ne rien renvoyer lorsqu'un filtre est inconnu ?
Fichiers
Révisions associées
backoffice: return nothing on unknown filter (#59224)
misc: remove useless code (#59224)
custom-views: record error on unknown filter (#59224)
Historique
Mis à jour par Thomas Noël il y a plus de 2 ans
Lauréline Guerin a écrit :
Est-ce qu'il serait envisageable de ne rien renvoyer lorsqu'un filtre est inconnu ?
Je dirais que oui, mais en début de cycle pour tenter de voir l'impact.
Je serai encore plus violent et demanderait de retourner un err:1
Mais j'avoue ne pas avoir bien compris ton problème actuel ("cellules contenu d'une fiche"), tu peux l'expliciter un peu ? Comment se retrouverait-on à faire une requête sur un champ qui n'existe pas ?
Mis à jour par Lauréline Guérin il y a plus de 2 ans
Cf #59210, Stéphane a écrit dans une cellule proto json:{% for enfant in cards|objects:"enfant"|filter_by:"representant_1"|filter_value:adulte_id %}
le champ "representant_1" n'existe pas, toutes les fiches enfant sont remontées
Lorsqu'on aura la possibilité d'écrire une liste d'ids dans la cellule contenu d'une fiche, sous la forme{{ cards|objects:"enfants"|filter_by:"representant_1"|filter_value:adulte_id|getlist:"id"|join:"," }}
on aura le même soucis
Mis à jour par Thomas Noël il y a plus de 2 ans
Lauréline Guerin a écrit :
Cf #59210, Stéphane a écrit dans une cellule proto json:
{% for enfant in cards|objects:"enfant"|filter_by:"representant_1"|filter_value:adulte_id %}
le champ "representant_1" n'existe pas, toutes les fiches enfant sont remontéesLorsqu'on aura la possibilité d'écrire une liste d'ids dans la cellule contenu d'une fiche, sous la forme
{{ cards|objects:"enfants"|filter_by:"representant_1"|filter_value:adulte_id|getlist:"id"|join:"," }}
on aura le même soucis
Ok, pigé, on est donc dans une erreur de configuration/paramétrage de la cellule -- j'avais peur que ça puisse arriver sur une manip sournoise de l'usager.
Mais donc je confirme ce que je disais plus haut, je verrais bien un « err : 1 » avec une err_desc du genre « representant_1 is not a field »
Et comme dit plus tôt je mesure mal les impacts négatifs potentiels... je n'en vois pas... peut-être que d'autres que moi pourraient avoir des idées. Et sans doute que ça serait quelque chose à pousser en tout début de cycle.
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0001-api-raise-bad-request-on-unknown-filter-59224.patch 0001-api-raise-bad-request-on-unknown-filter-59224.patch ajouté
- Fichier 0002-backoffice-raise-bad-request-on-unknown-filter-59224.patch 0002-backoffice-raise-bad-request-on-unknown-filter-59224.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
0002: un filtre inconnu donne une page moche avec une "Invalid request"
En théorie, si on clique bien où il faut, ça devrait pas se produire. Mais je pense que dans le cas d'une custom view déjà enregistrée, avec les champs du formulaires qui bougent, ça pourrait arriver à la consultation de la custom view.
Je préfèrerais dans le cas du backoffice renvoyer une liste vide, et un message d'erreur/warning.
note: pour les filtres de requête, quand on fait un filter_by sur un champ inconnu, on renvoie une liste de vide + LoggedError.
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0004-custom-views-record-error-on-unknown-filter-59224.patch 0004-custom-views-record-error-on-unknown-filter-59224.patch ajouté
- Fichier 0003-misc-remove-useless-code-59224.patch 0003-misc-remove-useless-code-59224.patch ajouté
- Fichier 0002-backoffice-return-nothing-on-unknown-filter-59224.patch 0002-backoffice-return-nothing-on-unknown-filter-59224.patch ajouté
- Fichier 0001-api-raise-bad-request-on-unknown-filter-59224.patch 0001-api-raise-bad-request-on-unknown-filter-59224.patch ajouté
- Statut changé de En cours à Solution proposée
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mais je pense que dans le cas d'une custom view déjà enregistrée, avec les champs du formulaires qui bougent, ça pourrait arriver à la consultation de la custom view.
Ce qui arrive actuellement c'est une erreur 500 parce que WHERE sur un champ qui n'existe plus; je dirais donc qu'avoir une erreur 400 c'est déjà améliorer les choses, et qu'on verra un ticket plus tard pour autre chose (type if user in backoffice: messages.error(...) + redirect ?).
Et là j'étais sur le 0001 en fait dans le 0002 il y a exactement ça qui est fait, le commentaire correspondait au patch d'avant.
Très bien donc.
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 0bb995e9ce06d40f2d6c05e06d34b0438cdc78c6 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Tue Jan 11 15:27:47 2022 +0100 custom-views: record error on unknown filter (#59224) commit 1e803e784b1b2171439f6673be1e45fd7979ad44 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Tue Jan 11 14:37:09 2022 +0100 misc: remove useless code (#59224) commit 36aed188917d392adfab5d7a037a1df65e058ad2 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Tue Jan 11 14:31:24 2022 +0100 backoffice: return nothing on unknown filter (#59224) commit e332d608cca57be90124bafc054cd5ceb29a9931 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Tue Jan 11 14:30:47 2022 +0100 api: raise bad request on unknown filter (#59224)
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
api: raise bad request on unknown filter (#59224)