Projet

Général

Profil

Bug #2544

Avoir d'avoir un tréma dans la chaîne de caractère d'une variable pour les workflows "à boucle"

Ajouté par Pierre Cros il y a environ 11 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
23 février 2013
Echéance:
% réalisé:

90%

Temps estimé:
Patch proposed:
Planning:

Description

J'ai essayé d'avoir Poseïdon à la place de Poseidon ici :
https://montpellier-agglo.test.au-quotidien.com/admin/workflows/12/status/just_submitted/items/1/

Erreur interne. Du coup j'ai mis Poseidon et j'ai modifié le formulaire en conséquence.


Fichiers

dotfile-from-wcs.txt (7,88 ko) dotfile-from-wcs.txt Thomas Noël, 07 mars 2013 16:07

Révisions associées

Révision 2bd656f8 (diff)
Ajouté par Thomas Noël il y a environ 11 ans

workflow/svg: correct encoding for textwrap (fix #2544)

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

workflow/svg: correct encoding for textwrap (fix #2544)

Historique

#1

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

Pour mémoire, la trace, et je n'arrive pas à reproduire en local :/

Exception:
  type = '<class 'xml.parsers.expat.ExpatError'>', value = 'no element found: line 1, column 0'

Stack trace (most recent call first):
  File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 1254, in close
  1252
  1253     def close(self):
> 1254         self._parser.Parse("", 1) # end of data
  1255         tree = self._target.close()
  1256         del self._target, self._parser # get rid of circular references

  locals:
     self = <xml.etree.ElementTree.XMLTreeBuilder instance at 0x2ba2d40>

  File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 964, in XML
   962     parser = XMLTreeBuilder()
   963     parser.feed(text)
>  964     return parser.close()
   965
   966 ##

  locals:
     text = ''
     parser = <xml.etree.ElementTree.XMLTreeBuilder instance at 0x2ba2d40>

  File "/usr/lib/pymodules/python2.6/wcs/admin/workflows.ptl", line 89, in graphviz_post_treatment
    87         part on as class selector on the top level svg:g element.
    88     '''
>   89     tree = etree.fromstring(content)
    90
    91     for root in tree:

  locals:
     content = ''

  File "/usr/lib/pymodules/python2.6/wcs/admin/workflows.ptl", line 151, in graphviz
   149             return ''
   150         if include:
>  151             out = graphviz_post_treatment(out)
   152             # It seems webkit refuse to accept SVG when using its proper namespace,
   153             # and xlink namespace prefix must be xlink: to be acceptable
#2

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

  • Assigné à Frédéric Péters supprimé

J'ai sauvagement sur le serveur fait :

            try:
                out = graphviz_post_treatment(out)
            except:
                return "graphviz post treatment error" 

pour le moment.

#3

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

@Thomas et Benjamin : Victor m'a dit que vous aviez parlé d'un module autre que graphviz pour la génération des graphes, de quoi s'agit-il ? (dans l'idée de ne pas s'ennuyer à creuser dans les différences de comportement que je vois ici, si on désire passer à autre chose).

#4

Mis à jour par Benjamin Dauvergne il y a environ 11 ans

C'est surtout Thomas qui s'extasie sur Raphael-JS, j'ai pas le début d'une idée sur le développement d'une version SVG / JS. Je laisse la parole à Thomas.

#5

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

Je me suis extasié trop vite.

#6

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

L'erreur est au niveau encodage reçu par dot :

Error: Invalid 2-byte UTF8 found in input. Perhaps "-Gcharset=latin1" is needed?

Ci-joint le fichier généré par wcs quand on indique "Poseïdon" dans le nom de test.

#7

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

Trouvé : y'a un textwrap qui ajoute des \n un peu trop méchamment, et dans le cas présent ça ajoute un \n en plein milieu de l'encodage utf8 du ï...

#8

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

  • Statut changé de Nouveau à Solution déployée
  • Version cible changé de Au-quotidien 2014.5 à Au-quotidien 2012.3

Proposition (testée sur ma machine) :

diff --git a/wcs/admin/workflows.ptl b/wcs/admin/workflows.ptl
index cbcd645..b46b911 100644
--- a/wcs/admin/workflows.ptl
+++ b/wcs/admin/workflows.ptl
@@ -133,7 +133,10 @@ def graphviz(workflow, url_prefix='', select=None, svg=True,
                     label += ' %s %s' % (_('by'), roles)
             else:
                 label = item.render_as_line()
-            label = textwrap.fill(label.replace('"', '\\"'), 20)
+            label = label.replace('"', '\\"')
+            label = label.decode('utf8')
+            label = textwrap.fill(label, 20, break_long_words=False)
+            label = label.encode('utf8')
             label = label.replace('\n', '\\n')
             print >>out, '[label="%s"' % label,
             if select == '%s-%s' % (i, item.id):
#9

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

  • % réalisé changé de 0 à 90
#10

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

#11

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

  • Statut changé de Solution déployée à Fermé
#12

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

  • Version cible Au-quotidien 2012.3 supprimé

Formats disponibles : Atom PDF