Development #45394
Permettre des aditions sur un ensemble de blocs de champs
0%
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
templates: add sum filter (#45394)
Historique
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.
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).
Mis à jour par Thomas Noël il y a presque 4 ans
- Fichier 0001-misc-add-get-filter-compatibility-for-block-field-45.patch 0001-misc-add-get-filter-compatibility-for-block-field-45.patch ajouté
Partie 1 : permettre l'usage de |get:"foo" sur un champ de type bloc, qui renvoie la liste des valeurs du champ "foo".
Mis à jour par Thomas Noël il y a presque 4 ans
- Fichier 0002-templates-add-sum-filter-45394.patch 0002-templates-add-sum-filter-45394.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Frédéric Péters a écrit :
Vraiment pour |sum, pas |add.
Et voici |sum donc
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).
Mis à jour par Thomas Noël il y a presque 4 ans
- Fichier 0002-templates-add-sum-filter-45394.patch 0002-templates-add-sum-filter-45394.patch ajouté
- Fichier 0001-misc-add-get-filter-compatibility-for-block-field-45.patch 0001-misc-add-get-filter-compatibility-for-block-field-45.patch ajouté
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.
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).
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)
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
misc: add getlist filter compatibility for block field (#45394)