Commit 90c6165c authored by Julien Muchembled's avatar Julien Muchembled

Do not use temporary files at all to render DWWorkflow graphes

parent 5abd0ffc
...@@ -75,7 +75,6 @@ from Products.DCWorkflowGraph import DCWorkflowGraph ...@@ -75,7 +75,6 @@ from Products.DCWorkflowGraph import DCWorkflowGraph
DCWorkflowGraph.getObjectTitle = getObjectTitle DCWorkflowGraph.getObjectTitle = getObjectTitle
from Products.DCWorkflowGraph.config import bin_search_path, DOT_EXE from Products.DCWorkflowGraph.config import bin_search_path, DOT_EXE
from tempfile import NamedTemporaryFile
from zLOG import LOG, WARNING from zLOG import LOG, WARNING
import subprocess import subprocess
...@@ -102,37 +101,25 @@ def getGraph(self, wf_id="", format="png", REQUEST=None): ...@@ -102,37 +101,25 @@ def getGraph(self, wf_id="", format="png", REQUEST=None):
except AttributeError: except AttributeError:
# no portal_properties or site_properties, fallback to: # no portal_properties or site_properties, fallback to:
encoding = self.management_page_charset.lower() encoding = self.management_page_charset.lower()
pot = pot.encode(encoding) result = pot.encode(encoding)
result = None
with NamedTemporaryFile(suffix='.dot') as infile: if REQUEST is None:
infile.write(pot) REQUEST = self.REQUEST
infile.seek(0) setHeader = REQUEST.RESPONSE.setHeader
if REQUEST is None: if format != 'dot':
REQUEST = self.REQUEST p = subprocess.Popen((DCWorkflowGraph.bin_search(DOT_EXE),
response = REQUEST.RESPONSE '-Nfontname=IPAexGothic', '-Nfontsize=10',
'-Efontname=IPAexGothic', '-Efontsize=10',
if format != 'dot': '-T%s' % format),
with NamedTemporaryFile(suffix='.%s' % format) as outfile: stdin=subprocess.PIPE, stdout=subprocess.PIPE)
subprocess.call((DCWorkflowGraph.bin_search(DOT_EXE), result = p.communicate(pot)[0]
'-Nfontname="IPAexGothic"',
'-Nfontsize=10', setHeader('Content-Type', 'image/%s' % format)
'-Efontname="IPAexGothic"', else:
'-Efontsize=10', filename = wf_id or self.getId()
'-T%s' % format, setHeader('Content-Type', 'text/x-graphviz')
'-o', setHeader('Content-Disposition', 'attachment; filename=%s.dot' % filename)
outfile.name,
infile.name))
result = outfile.read()
response.setHeader('Content-Type', 'image/%s' % format)
else:
result = infile.read()
filename = wf_id or self.getId()
response.setHeader('Content-Type', 'text/x-graphviz')
response.setHeader('Content-Disposition',
'attachment; filename=%s.dot' % filename)
if not result: if not result:
LOG("ERP5Type.patches.DCWorkflowGraph", WARNING, LOG("ERP5Type.patches.DCWorkflowGraph", WARNING,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment