Projet

Général

Profil

Development #59224

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

Ajouté par Lauréline Guérin il y a plus de 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
02 décembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision e332d608 (diff)
Ajouté par Lauréline Guérin il y a environ 2 ans

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

Révision 36aed188 (diff)
Ajouté par Lauréline Guérin il y a environ 2 ans

backoffice: return nothing on unknown filter (#59224)

Révision 1e803e78 (diff)
Ajouté par Lauréline Guérin il y a environ 2 ans

misc: remove useless code (#59224)

Révision 0bb995e9 (diff)
Ajouté par Lauréline Guérin il y a environ 2 ans

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

Historique

#1

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 ?

#2

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

#3

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

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Assigné à mis à Lauréline Guérin
#6

Mis à jour par Lauréline Guérin il y a plus de 2 ans

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

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.

#9

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

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
#11

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF