web/views/workflow.py
branchstable
changeset 5682 5628247f51ce
parent 5426 0d4853a6e5ee
child 5684 015755f67e46
equal deleted inserted replaced
5681:87fda44624c5 5682:5628247f51ce
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    18 """workflow views:
    18 """workflow views:
    19 
    19 
    20 * IWorkflowable views and forms
    20 * IWorkflowable views and forms
    21 * workflow entities views (State, Transition, TrInfo)
    21 * workflow entities views (State, Transition, TrInfo)
    22 
       
    23 """
    22 """
    24 __docformat__ = "restructuredtext en"
    23 __docformat__ = "restructuredtext en"
    25 _ = unicode
    24 _ = unicode
    26 
    25 
    27 import tempfile
    26 import tempfile
    32 
    31 
    33 from cubicweb import Unauthorized, view
    32 from cubicweb import Unauthorized, view
    34 from cubicweb.selectors import (implements, has_related_entities, one_line_rset,
    33 from cubicweb.selectors import (implements, has_related_entities, one_line_rset,
    35                                 relation_possible, match_form_params,
    34                                 relation_possible, match_form_params,
    36                                 implements, score_entity)
    35                                 implements, score_entity)
       
    36 from cubicweb.utils import make_uid
    37 from cubicweb.interfaces import IWorkflowable
    37 from cubicweb.interfaces import IWorkflowable
    38 from cubicweb.view import EntityView
    38 from cubicweb.view import EntityView
    39 from cubicweb.schema import display_name
    39 from cubicweb.schema import display_name
    40 from cubicweb.web import uicfg, stdmsgs, action, component, form, action
    40 from cubicweb.web import uicfg, stdmsgs, action, component, form, action
    41 from cubicweb.web import formfields as ff, formwidgets as fwdgs
    41 from cubicweb.web import formfields as ff, formwidgets as fwdgs
   413         os.close(pmap)
   413         os.close(pmap)
   414         # image file
   414         # image file
   415         fd, tmpfile = tempfile.mkstemp('.png')
   415         fd, tmpfile = tempfile.mkstemp('.png')
   416         os.close(fd)
   416         os.close(fd)
   417         generator.generate(visitor, prophdlr, tmpfile, mapfile)
   417         generator.generate(visitor, prophdlr, tmpfile, mapfile)
       
   418         filekeyid = make_uid()
       
   419         self._cw.session.data[filekeyid] = tmpfile
   418         self.w(u'<img src="%s" alt="%s" usemap="#%s" />' % (
   420         self.w(u'<img src="%s" alt="%s" usemap="#%s" />' % (
   419             xml_escape(entity.absolute_url(vid='wfimage', tmpfile=tmpfile)),
   421             xml_escape(entity.absolute_url(vid='tmppng', tmpfile=filekeyid)),
   420             xml_escape(self._cw._('graphical workflow for %s') % entity.name),
   422             xml_escape(self._cw._('graphical workflow for %s') % entity.name),
   421             wfname))
   423             wfname))
   422         stream = open(mapfile, 'r').read()
   424         stream = open(mapfile, 'r').read()
   423         stream = stream.decode(self._cw.encoding)
   425         stream = stream.decode(self._cw.encoding)
   424         self.w(stream)
   426         self.w(stream)
   425         os.unlink(mapfile)
   427         os.unlink(mapfile)
   426 
   428 
   427 class WorkflowImageView(TmpFileViewMixin, view.EntityView):
   429 
   428     __regid__ = 'wfimage'
   430 class TmpPngView(TmpFileViewMixin, view.EntityView):
   429     __select__ = implements('Workflow')
   431     __regid__ = 'tmppng'
       
   432     __select__ = match_form_params('tmpfile')
   430     content_type = 'image/png'
   433     content_type = 'image/png'
       
   434     binary = True
   431 
   435 
   432     def cell_call(self, row=0, col=0):
   436     def cell_call(self, row=0, col=0):
   433         tmpfile = self._cw.form.get('tmpfile', None)
   437         tmpfile = self._cw.session.data[self._cw.form['tmpfile']]
       
   438         print 'tmpfile', tmpfile
   434         self.w(open(tmpfile, 'rb').read())
   439         self.w(open(tmpfile, 'rb').read())
   435         os.unlink(tmpfile)
   440         #os.unlink(tmpfile)