Bug #18814
template_on_formdata appelé sur chaque variable lors de la création d'odt
Début:
20 septembre 2017
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Description
Dans wcs/wf/export_to_model.py :
def process_text(t): if isinstance(t, unicode): t = t.encode(get_publisher().site_charset) t = template_on_formdata(formdata, t) return unicode(t, get_publisher().site_charset) for node in root.iter():
est appelé pour chaque variable repérée, et donc on recalcule les variables du formulaire à chaque fois, et ce calcul est couteux. Sur un "gros" document avec un beaucoup de variables à remplacer, le traitement dépasse 30 secondes, et ça débouche sur une 502.
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 6 ans
- Fichier 0001-workflows-compute-formdata-variables-only-once-in-od.patch 0001-workflows-compute-formdata-variables-only-once-in-od.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a plus de 6 ans
Un test avec un mock sur get_context_variables() pour compter le nombre de fois où c'est appelé ?
Mis à jour par Thomas Noël il y a plus de 6 ans
- Fichier 0001-workflows-compute-formdata-variables-only-once-in-od.patch 0001-workflows-compute-formdata-variables-only-once-in-od.patch ajouté
Voilà, c'est le plus joli test que j'ai réussi à faire... avant le patch il ne passe pas, parce que le premier mock crashe ; quand on retire ce premier mock on voit bien les 6 appels sur get_formdata_template_context, qui passe donc à 0 désormais.
Mis à jour par Thomas Noël il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit 64515ddef32b5baf3fa76349c650e3024a84daab (HEAD -> master) Author: Thomas NOEL <tnoel@entrouvert.com> Date: Wed Sep 20 14:41:27 2017 +0200 workflows: compute formdata variables only once in odt (#18814)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
workflows: compute formdata variables only once in odt (#18814)