Projet

Général

Profil

Development #45394

Permettre des aditions sur un ensemble de blocs de champs

Ajouté par Emmanuel Cazenave il y a presque 4 ans. Mis à jour il y a presque 4 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Un bloc de champ dont un des champs 'foo' sera une valeur numérique, dans le workflow le besoin d’additionner toutes ces variables foo.

Actuellement si je ne m'abuse la seule façon de faire est :

{% with f0=form_var_block_0_foo f1=form_var_block_1_foo f2=form_var_block_2_foo }{{ 0|add:f0|add:f1|add:f2 }}{ endwith %}

où il faut répéter les fX=form_var_block_X_foo autant de fois que l'on a autorisé la répétition du bloc de champ.


Fichiers

Révisions associées

Révision e08ac1f3 (diff)
Ajouté par Thomas Noël il y a presque 4 ans

misc: add getlist filter compatibility for block field (#45394)

Révision 4c8d63ea (diff)
Ajouté par Thomas Noël il y a presque 4 ans

templates: add sum filter (#45394)

Historique

#2

Mis à jour par Frédéric Péters il y a presque 4 ans

Rapidement je vois deux approches,

  • form_var_block|sum:"foo", qui ferait la somme des attributs foo des éléments du bloc
  • form_var_block_list_foo|sum, avec la première partie qui produirait la liste des attributs foo des éléments du bloc, et un filtre |sum qui ferait la somme

et là j'aurais tendance à privilégier la première, notamment pour éviter une multiplication de variables dans la vue /inspect.

#3

Mis à jour par Thomas Noël il y a presque 4 ans

En partant de la première idée, mais en ajoutant une étape explicite d'extraction d'une liste des champs "foo" :

form_var_block|list_field:"foo"|add

où |list_field produirait la liste des valeurs des champs "fields" des itérations du bloc. Ca permet un usage par ailleurs, dans un "for", etc. Le "add" serait une modif sur le filtre existant pour qu'il sache faire un "add" des éléments d'une liste (jouable, je pense).

#4

Mis à jour par Thomas Noël il y a presque 4 ans

  • Assigné à mis à Thomas Noël
#5

Mis à jour par Frédéric Péters il y a presque 4 ans

Vraiment pour |sum, pas |add.

#6

Mis à jour par Thomas Noël il y a presque 4 ans

Partie 1 : permettre l'usage de |get:"foo" sur un champ de type bloc, qui renvoie la liste des valeurs du champ "foo".

#7

Mis à jour par Thomas Noël il y a presque 4 ans

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

Vraiment pour |sum, pas |add.

Et voici |sum donc

#8

Mis à jour par Frédéric Péters il y a presque 4 ans

0001

J'hésite quand même un peu, avec l'introduction d'un |getlist peut-être plus explicite.

(et sinon il manque une ligne vide, pour en avoir deux au-dessus de class LazyUser)

0002

Je serais à y refuser explicitement une chaine de caractère qui serait passée en paramètre (qui sera itérable et donnera la somme des chiffres apparaissant dedans ce qui est bizarre).

#9

Mis à jour par Thomas Noël il y a presque 4 ans

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

0001

J'hésite quand même un peu, avec l'introduction d'un |getlist peut-être plus explicite.

Au début je me suis dit pareil et je suis tombé sur le get déjà présent sur LazyFormData (avec la même idée : "compatibility with |get filter, to return a field by varname"). Mais c'est vrai qu'ici on retourne une liste des valeurs, j'imagine que c'est ça que tu veux expliciter.

Dans la branche j'ai envoyé l'alternative avec |getlist:"foo" ; je suis malgré tout encore un peu hésitant, j'aimais bien le "get" :)

(et sinon il manque une ligne vide, pour en avoir deux au-dessus de class LazyUser)

(ajoutée)

0002

Je serais à y refuser explicitement une chaine de caractère qui serait passée en paramètre (qui sera itérable et donnera la somme des chiffres apparaissant dedans ce qui est bizarre).

Bonne idée, ajoutée.

#10

Mis à jour par Frédéric Péters il y a presque 4 ans

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

Moi ça me va ainsi, je préfère vraiment l'explicitement différent |getlist. (reste à mettre à jour l'intitulé du commit).

#11

Mis à jour par Thomas Noël il y a presque 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 4c8d63eaabcb59a3fdb961cfe96571404d28a5e9
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Thu Jul 23 16:19:50 2020 +0200

    templates: add sum filter (#45394)

commit e08ac1f3d4a448b5e4663c122d487a0a4317836b
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Thu Jul 23 15:57:41 2020 +0200

    misc: add getlist filter compatibility for block field (#45394)

#12

Mis à jour par Frédéric Péters il y a presque 4 ans

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

Formats disponibles : Atom PDF