Project

General

Profile

Development #59224

Form/Carddata listing & api - filtre qui n'existe pas

Added by Lauréline Guerin 6 months ago. Updated 4 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
02 Dec 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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

Revision e332d608 (diff)
Added by Lauréline Guérin 4 months ago

api: raise bad request on unknown filter (#59224)

Revision 36aed188 (diff)
Added by Lauréline Guérin 4 months ago

backoffice: return nothing on unknown filter (#59224)

Revision 1e803e78 (diff)
Added by Lauréline Guérin 4 months ago

misc: remove useless code (#59224)

Revision 0bb995e9 (diff)
Added by Lauréline Guérin 4 months ago

custom-views: record error on unknown filter (#59224)

History

#1

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 ?

#2

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

#3

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é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

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.

#5

Updated by Lauréline Guerin 5 months ago

  • Assignee set to Lauréline Guerin
#6

Updated by Lauréline Guerin 5 months ago

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.

#8

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.

#9

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

Updated by Frédéric Péters 4 months ago

  • Status changed from Résolu (à déployer) to Solution déployée
#11

Updated by Transition automatique about 2 months ago

Automatic expiration

Also available in: Atom PDF