admin: add required encoding for graphviz subprocess (#36515)
This commit is contained in:
parent
697949b551
commit
8831c91a51
|
@ -23,6 +23,8 @@ from subprocess import Popen, PIPE
|
|||
import textwrap
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from django.utils import six
|
||||
from django.utils.encoding import force_bytes, force_text
|
||||
from django.utils.six import StringIO
|
||||
|
||||
from quixote import redirect, get_publisher
|
||||
|
@ -116,7 +118,7 @@ def graphviz_post_treatment(content, colours, include=False):
|
|||
remove_tag(root, TITLE)
|
||||
for child in root:
|
||||
adjust_style(child, child, colours)
|
||||
return ET.tostring(tree)
|
||||
return force_text(ET.tostring(tree))
|
||||
|
||||
def graphviz(workflow, url_prefix='', select=None, svg=True,
|
||||
include=False):
|
||||
|
@ -179,9 +181,11 @@ def graphviz(workflow, url_prefix='', select=None, svg=True,
|
|||
done[next_id] = True
|
||||
label = item.get_jump_label(target_id=next_id)
|
||||
label = label.replace('"', '\\"')
|
||||
label = label.decode('utf8')
|
||||
if six.PY2:
|
||||
label = label.decode('utf8')
|
||||
label = textwrap.fill(label, 20, break_long_words=False)
|
||||
label = label.encode('utf8')
|
||||
if six.PY2:
|
||||
label = label.encode('utf8')
|
||||
label = label.replace('\n', '\\n')
|
||||
print('[label="%s"' % label, end=' ', file=out)
|
||||
print(',URL="%s%s"]' % (url_prefix, url), file=out)
|
||||
|
@ -191,7 +195,7 @@ def graphviz(workflow, url_prefix='', select=None, svg=True,
|
|||
if svg:
|
||||
try:
|
||||
process = Popen(['dot', '-Tsvg'], stdin=PIPE, stdout=PIPE)
|
||||
out, err = process.communicate(out)
|
||||
out, err = process.communicate(force_bytes(out))
|
||||
if process.returncode != 0:
|
||||
return ''
|
||||
except OSError:
|
||||
|
|
Loading…
Reference in New Issue