web/views/workflow.py
changeset 5685 17883ced01f8
parent 5556 9ab2b4c74baf
parent 5684 015755f67e46
child 5752 b0bb553e3be4
--- a/web/views/workflow.py	Mon Jun 07 13:31:46 2010 +0200
+++ b/web/views/workflow.py	Mon Jun 07 18:16:16 2010 +0200
@@ -19,7 +19,6 @@
 
 * IWorkflowable views and forms
 * workflow entities views (State, Transition, TrInfo)
-
 """
 __docformat__ = "restructuredtext en"
 _ = unicode
@@ -34,6 +33,7 @@
 from cubicweb.selectors import (implements, has_related_entities, one_line_rset,
                                 relation_possible, match_form_params,
                                 implements, score_entity, adaptable)
+from cubicweb.utils import make_uid
 from cubicweb.view import EntityView
 from cubicweb.schema import display_name
 from cubicweb.web import uicfg, stdmsgs, action, component, form, action
@@ -439,8 +439,10 @@
         fd, tmpfile = tempfile.mkstemp('.png')
         os.close(fd)
         generator.generate(visitor, prophdlr, tmpfile, mapfile)
+        filekeyid = make_uid()
+        self._cw.session.data[filekeyid] = tmpfile
         self.w(u'<img src="%s" alt="%s" usemap="#%s" />' % (
-            xml_escape(entity.absolute_url(vid='wfimage', tmpfile=tmpfile)),
+            xml_escape(entity.absolute_url(vid='tmppng', tmpfile=filekeyid)),
             xml_escape(self._cw._('graphical workflow for %s') % entity.name),
             wfname))
         stream = open(mapfile, 'r').read()
@@ -448,12 +450,14 @@
         self.w(stream)
         os.unlink(mapfile)
 
-class WorkflowImageView(TmpFileViewMixin, view.EntityView):
-    __regid__ = 'wfimage'
-    __select__ = implements('Workflow')
+
+class TmpPngView(TmpFileViewMixin, view.EntityView):
+    __regid__ = 'tmppng'
+    __select__ = match_form_params('tmpfile')
     content_type = 'image/png'
+    binary = True
 
     def cell_call(self, row=0, col=0):
-        tmpfile = self._cw.form.get('tmpfile', None)
+        tmpfile = self._cw.session.data[self._cw.form['tmpfile']]
         self.w(open(tmpfile, 'rb').read())
         os.unlink(tmpfile)