web/views/workflow.py
branchstable
changeset 2312 af4d8f75c5db
parent 2005 e8032965f37a
child 2381 caad2367d940
child 2725 6d0acd812d98
equal deleted inserted replaced
2311:f178182b1305 2312:af4d8f75c5db
     9 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     9 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
    10 """
    10 """
    11 __docformat__ = "restructuredtext en"
    11 __docformat__ = "restructuredtext en"
    12 _ = unicode
    12 _ = unicode
    13 
    13 
    14 from logilab.mtconverter import html_escape
    14 from logilab.mtconverter import xml_escape
    15 from logilab.common.graph import escape, GraphGenerator, DotBackend
    15 from logilab.common.graph import escape, GraphGenerator, DotBackend
    16 
    16 
    17 from cubicweb import Unauthorized, view
    17 from cubicweb import Unauthorized, view
    18 from cubicweb.selectors import (implements, has_related_entities,
    18 from cubicweb.selectors import (implements, has_related_entities,
    19                                 relation_possible, match_form_params)
    19                                 relation_possible, match_form_params)
   117     """convenience trick, State's incontext view should not be clickable"""
   117     """convenience trick, State's incontext view should not be clickable"""
   118     id = 'incontext'
   118     id = 'incontext'
   119     __select__ = implements('State')
   119     __select__ = implements('State')
   120 
   120 
   121     def cell_call(self, row, col):
   121     def cell_call(self, row, col):
   122         self.w(html_escape(self.view('textincontext', self.rset,
   122         self.w(xml_escape(self.view('textincontext', self.rset,
   123                                      row=row, col=col)))
   123                                      row=row, col=col)))
   124 
   124 
   125 
   125 
   126 # workflow images #############################################################
   126 # workflow images #############################################################
   127 
   127 
   144     def cell_call(self, row, col, **kwargs):
   144     def cell_call(self, row, col, **kwargs):
   145         entity = self.entity(row, col)
   145         entity = self.entity(row, col)
   146         self.w(u'<h1>%s</h1>' % (self.req._('workflow for %s')
   146         self.w(u'<h1>%s</h1>' % (self.req._('workflow for %s')
   147                                  % display_name(self.req, entity.name)))
   147                                  % display_name(self.req, entity.name)))
   148         self.w(u'<img src="%s" alt="%s"/>' % (
   148         self.w(u'<img src="%s" alt="%s"/>' % (
   149             html_escape(entity.absolute_url(vid='ewfgraph')),
   149             xml_escape(entity.absolute_url(vid='ewfgraph')),
   150             html_escape(self.req._('graphical workflow for %s') % entity.name)))
   150             xml_escape(self.req._('graphical workflow for %s') % entity.name)))
   151 
   151 
   152 
   152 
   153 class WorkflowDotPropsHandler(object):
   153 class WorkflowDotPropsHandler(object):
   154     def __init__(self, req):
   154     def __init__(self, req):
   155         self._ = req._
   155         self._ = req._