web/views/workflow.py
changeset 2789 39712da6f397
parent 2726 03e7a6efd960
child 2968 0e3460341023
equal deleted inserted replaced
2788:8d3dbe577d3a 2789:39712da6f397
    45     id = 'statuschange'
    45     id = 'statuschange'
    46     title = _('status change')
    46     title = _('status change')
    47     __select__ = implements(IWorkflowable) & match_form_params('treid')
    47     __select__ = implements(IWorkflowable) & match_form_params('treid')
    48 
    48 
    49     def cell_call(self, row, col):
    49     def cell_call(self, row, col):
    50         entity = self.entity(row, col)
    50         entity = self.rset.get_entity(row, col)
    51         state = entity.in_state[0]
    51         state = entity.in_state[0]
    52         transition = self.req.entity_from_eid(self.req.form['treid'])
    52         transition = self.req.entity_from_eid(self.req.form['treid'])
    53         dest = transition.destination()
    53         dest = transition.destination()
    54         _ = self.req._
    54         _ = self.req._
    55         form = self.vreg.select('forms', 'changestate', self.req, rset=self.rset,
    55         form = self.vreg.select('forms', 'changestate', self.req, rset=self.rset,
   116 class CellView(view.EntityView):
   116 class CellView(view.EntityView):
   117     id = 'cell'
   117     id = 'cell'
   118     __select__ = implements('TrInfo')
   118     __select__ = implements('TrInfo')
   119 
   119 
   120     def cell_call(self, row, col, cellvid=None):
   120     def cell_call(self, row, col, cellvid=None):
   121         self.w(self.entity(row, col).view('reledit', rtype='comment'))
   121         self.w(self.rset.get_entity(row, col).view('reledit', rtype='comment'))
   122 
   122 
   123 
   123 
   124 class StateInContextView(view.EntityView):
   124 class StateInContextView(view.EntityView):
   125     """convenience trick, State's incontext view should not be clickable"""
   125     """convenience trick, State's incontext view should not be clickable"""
   126     id = 'incontext'
   126     id = 'incontext'
   148     id = 'workflow'
   148     id = 'workflow'
   149     __select__ = implements('CWEType')
   149     __select__ = implements('CWEType')
   150     cache_max_age = 60*60*2 # stay in http cache for 2 hours by default
   150     cache_max_age = 60*60*2 # stay in http cache for 2 hours by default
   151 
   151 
   152     def cell_call(self, row, col, **kwargs):
   152     def cell_call(self, row, col, **kwargs):
   153         entity = self.entity(row, col)
   153         entity = self.rset.get_entity(row, col)
   154         self.w(u'<h1>%s</h1>' % (self.req._('workflow for %s')
   154         self.w(u'<h1>%s</h1>' % (self.req._('workflow for %s')
   155                                  % display_name(self.req, entity.name)))
   155                                  % display_name(self.req, entity.name)))
   156         self.w(u'<img src="%s" alt="%s"/>' % (
   156         self.w(u'<img src="%s" alt="%s"/>' % (
   157             xml_escape(entity.absolute_url(vid='ewfgraph')),
   157             xml_escape(entity.absolute_url(vid='ewfgraph')),
   158             xml_escape(self.req._('graphical workflow for %s') % entity.name)))
   158             xml_escape(self.req._('graphical workflow for %s') % entity.name)))
   215     content_type = 'image/png'
   215     content_type = 'image/png'
   216     __select__ = implements('CWEType')
   216     __select__ = implements('CWEType')
   217 
   217 
   218     def _generate(self, tmpfile):
   218     def _generate(self, tmpfile):
   219         """display schema information for an entity"""
   219         """display schema information for an entity"""
   220         entity = self.entity(self.row, self.col)
   220         entity = self.rset.get_entity(self.row, self.col)
   221         visitor = WorkflowVisitor(entity)
   221         visitor = WorkflowVisitor(entity)
   222         prophdlr = WorkflowDotPropsHandler(self.req)
   222         prophdlr = WorkflowDotPropsHandler(self.req)
   223         generator = GraphGenerator(DotBackend('workflow', 'LR',
   223         generator = GraphGenerator(DotBackend('workflow', 'LR',
   224                                               ratio='compress', size='30,12'))
   224                                               ratio='compress', size='30,12'))
   225         return generator.generate(visitor, prophdlr, tmpfile)
   225         return generator.generate(visitor, prophdlr, tmpfile)