Projet

Général

Profil

Development #53506

Le filtre order_by ne sait pas utiliser les identifiants de variables

Ajouté par Emmanuel Cazenave il y a environ 3 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
28 avril 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Séance de debug sur #53493, le filtre |order_by:"foo" ne fonctionne que lorsque foo est un nom de colonne de la table sql.

Le filtre a été introduit dans #32784, pour usage interne ?


Fichiers


Demandes liées

Lié à Publik - Documentation #53494: ajouter aux infos sur les filtres la possibilité de trierFermé28 avril 2021

Actions

Révisions associées

Révision bc90b08f (diff)
Ajouté par Frédéric Péters il y a plus de 2 ans

general: extend |order_by to support sorting on fields (#53506)

Historique

#2

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

La motivation première semble en effet avoir été de trier sur la date pour un gabarit interne; ça pourrait donc être étendu. (et ça fera un système où le même filtre fonctionnerait avec des identifiants "internes" et ceux des champs; ce qu'on n'a pas voulu pour |filter_by).

#3

Mis à jour par Pierre Cros il y a environ 3 ans

#4

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

Voilà le patch dans mon idée d'étendre |order_by; il est fait avec priorité aux champs, i.e. si un champ a comme identifiant receipt_time, il sera pris plutôt que l'attribut receipt_time.

Je préfère ça à la version qui ajouterait un |order_by_field mais je suis tout à fait ok pour plutôt être explicite, tellement ok que j'ai aussi fait ça dans un second patch.

#5

Mis à jour par Emmanuel Cazenave il y a environ 3 ans

Il faut qu'on se décide pour une des deux approches (un order_by qui gère tout vs order_by pour les colonnes de tables et order_by_field pour les variables), correct ?

#6

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

Ou un troisième patch que je n'ai pas fait avec |order_by pour les champs et un |order_by_attribute pour les attributs.

#7

Mis à jour par Emmanuel Cazenave il y a environ 3 ans

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

Ou un troisième patch que je n'ai pas fait avec |order_by pour les champs et un |order_by_attribute pour les attributs.

Ça donnerait une cohérence entre |order_by et |filter_by, du coup ça a ma préférence.

#8

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

J'oubliais de dire que cette troisième option demande un inventaire de tous les sites pour voir si l'|order_by actuel est utilisé, et si c'est le cas une phase de migration qui serait soit d'introduire |order_by_attribute et aller tout modifier et une fois que c'est fait modifier le comportement de |order_by, soit d'introduire |order_by sous sa forme 0001 et attendre que tout ça soit modifié avant d'en retirer la gestion des attributs.

#9

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

  • Assigné à mis à Frédéric Péters
#10

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

J'oubliais de dire que cette troisième option demande un inventaire de tous les sites pour voir si l'|order_by actuel est utilisé, et si c'est le cas une phase de migration qui serait soit d'introduire |order_by_attribute et aller tout modifier et une fois que c'est fait modifier le comportement de |order_by, soit d'introduire |order_by sous sa forme 0001 et attendre que tout ça soit modifié avant d'en retirer la gestion des attributs.

J'oubliais de noter que je ne ferai pas ce travail.

#11

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

On m'a demandé de relire ça mais il semble qu'une discussion est en court ...?

#12

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

C'était un peu avoir ton option sur les approches proposées.

#13

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

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

C'était un peu avoir ton option sur les approches proposées.

"attribute" pour moi ne veut rien dire dans le langage actuel de w.c.s. donc je préfère le order_by magique.

S'il faut permettre de «forcer l'usage de la colonne SQL» pour résoudre une ambiguïté, alors je propose plutôt une syntaxe du genre |order_by:"sql:receipt_time" et oui c'est assez «tech» mais ça n'arrivera quasi jamais, la plupart du temps |order_by:"receipt_time" fera ce qu'il faut.

#15

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

"attribute" pour moi ne veut rien dire dans le langage actuel de w.c.s. donc je préfère le order_by magique.

J'ai rebasé cette version; ça a juste demandé une petite modif pour satisfaire pylint.

#16

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

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

Ok pour moi.

A noter qu'on pourrait ajouter encore un cran de magie pour gérer un appel genre « |order_by:xxx_raw » si quelqu'un veut un jour explicitement trier les listes selon leur id (puisque le « if attribute.store_display_value: order_by = order_by + '_display'» va trier plus humainement selon le texte, ce qui me semble bien). Mais je préfère attendre le besoin et faire un ticket explicite quand il sera arrivé, que complexifier le patch ici proposé.

#17

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit bc90b08f5c6423fc571479335b2e42314100bf14
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Apr 28 20:24:06 2021 +0200

    general: extend |order_by to support sorting on fields (#53506)
#18

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

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

Formats disponibles : Atom PDF