Projet

Général

Profil

Development #48181

|filter_by_status

Ajouté par Frédéric Péters il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
02 novembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Comme on a un |filter_by_user:..., avoir un |filter_by_status:..., qui prenne comme paramètre un libellé de statut.

(on pourrait se dire que c'est plutôt à intégrer dans |filter_by:... mais je préférerais conserver celui-ci pour les champs, parce qu'une fois ouvert au-delà des champs ça ne finira pas).


Fichiers

Révisions associées

Révision a7ce65cb (diff)
Ajouté par Lauréline Guérin il y a plus de 3 ans

misc: add |filter_by_status for querysets (#48181)

Historique

#1

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

J'aurais bien renvoyé aucun résultat si le status n'existe pas, mais je ne sais pas écrire queryset.none() à la sauce w.c.s.

#2

Mis à jour par Thomas Noël il y a plus de 3 ans

Lauréline Guerin a écrit :

J'aurais bien renvoyé aucun résultat si le status n'existe pas, mais je ne sais pas écrire queryset.none() à la sauce w.c.s.

J'ai l'impression qu'il faudrait ajouter un « self._is_none » dans LazyFormDefObjectsManager, par défaut à is_none=False, et le passer à True si le statut n'est pas trouvé. Et gérer le cas « if self._is_none: » au niveau de count, getitem et iter, en considérant que la liste est vide dans ce cas là, sans faire aucune requête.

Ca me parait nécessaire ici plutôt que d'avoir un filtre qui ne filtre rien quand le statut n'existe pas.

#3

Mis à jour par Frédéric Péters il y a plus de 3 ans

Je serais plutôt si le statut n'existe pas, faire Equal('status', '_none') et ne rien obtenir via la requête, plutôt que porter ça sur l'objet. Alternativement on peut ajouter un class Nothing(Criteria) avec un as_sql qui soit return '0' et utiliser ça.

Mais la première option de faire la requête sur le status me va tout à fait. (surtout qu'il me fait noter que je vais créer un ticket pour ajouter un index sur la colonne).

#5

Mis à jour par Thomas Noël il y a plus de 3 ans

Est-ce qu'on se permettrait, en fallback, de chercher aussi parmi les identifiants des status ? Dans l'idée que « filter_by_status:4 » fonctionne et soit "stable" même si le nom du statut change ? (je dis "stable" car évidemment ça partira en vrille si le workflow est totalement modifié, mais bon, dans la recherche par nom ça partira en vrille aussi si un nom change, sans compter qu'on sera coincé si un nom contient un guillement).

(c'est vraiment juste une proposition, qui peut être refusée ; de toute façon je crois qu'il est préférable de passer par des vues personnalisées pour ce genre de filtrage)

#6

Mis à jour par Frédéric Péters il y a plus de 3 ans

Non je préfère pas; si on veut des identifiants stables pour les statuts, plutôt ajouter de quoi leur définir un slug.

#7

Mis à jour par Thomas Noël il y a plus de 3 ans

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

Frédéric Péters a écrit :

Non je préfère pas; si on veut des identifiants stables pour les statuts, plutôt ajouter de quoi leur définir un slug.

Ca me va très bien.

Ack ainsi, donc.

#8

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit a7ce65cb3e33645d242871baaf4298e94a9cf4d5 (HEAD -> master, origin/wip/48181-filter-by-status, origin/master, origin/HEAD, wip/48181-filter-by-status)
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue Nov 3 15:08:08 2020 +0100

    misc: add |filter_by_status for querysets (#48181)
#9

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF