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 ?
Files
Associated revisions
backoffice: return nothing on unknown filter (#59224)
misc: remove useless code (#59224)
custom-views: record error on unknown filter (#59224)
History
Updated by Thomas Noël 6 months ago
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 ?
Updated by Lauréline Guerin 6 months ago
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
Updated by Thomas Noël 6 months ago
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.
Updated by Lauréline Guerin 5 months ago
- File 0001-api-raise-bad-request-on-unknown-filter-59224.patch 0001-api-raise-bad-request-on-unknown-filter-59224.patch added
- File 0002-backoffice-raise-bad-request-on-unknown-filter-59224.patch 0002-backoffice-raise-bad-request-on-unknown-filter-59224.patch added
- Status changed from Nouveau to En cours
- Patch proposed changed from No to Yes
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.
Updated by Lauréline Guerin 5 months ago
- File 0004-custom-views-record-error-on-unknown-filter-59224.patch 0004-custom-views-record-error-on-unknown-filter-59224.patch added
- File 0003-misc-remove-useless-code-59224.patch 0003-misc-remove-useless-code-59224.patch added
- File 0002-backoffice-return-nothing-on-unknown-filter-59224.patch 0002-backoffice-return-nothing-on-unknown-filter-59224.patch added
- File 0001-api-raise-bad-request-on-unknown-filter-59224.patch 0001-api-raise-bad-request-on-unknown-filter-59224.patch added
- Status changed from En cours to Solution proposée
Updated by Frédéric Péters 4 months ago
- Status changed from Solution proposée to 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.
Updated by Lauréline Guerin 4 months ago
- Status changed from Solution validée to 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)
Updated by Frédéric Péters 4 months ago
- Status changed from Résolu (à déployer) to Solution déployée
api: raise bad request on unknown filter (#59224)