Projet

Général

Profil

Bug #3153

pb d'encodage lors d'un trigger-jumps

Ajouté par Thomas Noël il y a presque 11 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
-
Version cible:
-
Début:
25 juin 2013
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Planning:

Description

Sur recette CG14, crash lors de l'exécution du workflow suite à un jump (plus exactement, lors de la première action "enregistrement dans le journal").

formdata <Premiere-Demande-D-Apa-A-Domicile id:49> jumps to status 33
Traceback (most recent call last):
  File "/usr/bin/wcsctl", line 8, in <module>
    ctl.run(sys.argv[1:])
  File "/usr/lib/python2.6/site-packages/wcs/qommon/ctl.py", line 150, in run
    return cmd.run(args, options)
  File "/usr/lib/python2.6/site-packages/wcs/qommon/ctl.py", line 64, in run
    return self.execute(base_options, sub_options, args)
  File "/usr/lib/python2.6/site-packages/wcs/ctl/trigger_jumps.py", line 98, in execute
    select_and_jump_formdata(formdef, trigger, rows, status_ids)
  File "/usr/lib/python2.6/site-packages/wcs/ctl/trigger_jumps.py", line 150, in select_and_jump_formdata
    jump_and_perform(formdata, jump_to, row.get('data'))
  File "/usr/lib/python2.6/site-packages/wcs/wf/jump.py", line 39, in jump_and_perform
    url = formdata.perform_workflow()
  File "/usr/lib/python2.6/site-packages/wcs/formdata.py", line 210, in perform_workflow
    url = wf_status.perform_items(self)
  File "/usr/lib/python2.6/site-packages/wcs/workflows.py", line 430, in perform_items
    url = item.perform(formdata) or url
  File "/usr/lib/python2.6/site-packages/wcs/wf/register_comment.py", line 41, in perform
    formdata.evolution[-1].comment = template_on_formdata(formdata, self.comment)
  File "/usr/lib/python2.6/site-packages/wcs/workflows.py", line 1097, in template_on_formdata
    processor.generate(fd, dict)
  File "/usr/lib/python2.6/site-packages/wcs/qommon/ezt.py", line 326, in generate
    self._execute(self.program, fp, ctx)
  File "/usr/lib/python2.6/site-packages/wcs/qommon/ezt.py", line 454, in _execute
    step[0](step[1], fp, ctx)
  File "/usr/lib/python2.6/site-packages/wcs/qommon/ezt.py", line 457, in _cmd_print
    _write_value(valref, fp, ctx)
  File "/usr/lib/python2.6/site-packages/wcs/qommon/ezt.py", line 682, in _write_value
    fp.write(format(str(value)))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)

Révisions associées

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

template_on_formdata: encode unicode str (#3153)

Historique

#1

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

  • Statut changé de Nouveau à En cours

Sur un diagnostic de Benj et avec l'indication thérapeutique de Fred :

diff --git a/wcs/workflows.py b/wcs/workflows.py
index 5a86327..be01d99 100644
--- a/wcs/workflows.py
+++ b/wcs/workflows.py
@@ -1090,6 +1090,11 @@ def template_on_formdata(formdata, template, process=None):
         for key in dict:
             dict[key] = process(dict[key])

+    charset = get_publisher().site_charset
+    for k, v in dict.items():
+        if isinstance(v, unicode):
+            dict[k] = v.encode(charset, 'ignore')
+
     processor = ezt.Template(compress_whitespace=False)
     processor.parse(template or '')

i.e. on encode les unicode en utf-8 avant de les envoyer à ezt (qui ne gère pas ça).

#2

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

  • Statut changé de En cours à Résolu (à déployer)
#3

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF