web/views/workflow.py
branch3.5
changeset 3220 11b6016e3970
parent 3219 be8cfc00ae04
child 3228 7b05b2709439
equal deleted inserted replaced
3219:be8cfc00ae04 3220:11b6016e3970
    39     id = 'statuschange'
    39     id = 'statuschange'
    40     title = _('status change')
    40     title = _('status change')
    41     __select__ = implements(IWorkflowable) & match_form_params('treid')
    41     __select__ = implements(IWorkflowable) & match_form_params('treid')
    42 
    42 
    43     def cell_call(self, row, col):
    43     def cell_call(self, row, col):
    44         entity = self.entity(row, col)
    44         entity = self.rset.get_entity(row, col)
    45         transition = self.req.entity_from_eid(self.req.form['treid'])
    45         transition = self.req.entity_from_eid(self.req.form['treid'])
    46         dest = transition.destination()
    46         dest = transition.destination()
    47         _ = self.req._
    47         _ = self.req._
    48         form = self.vreg['forms'].select('changestate', self.req, entity=entity,
    48         form = self.vreg['forms'].select('changestate', self.req, entity=entity,
    49                                          redirect_path=self.redirectpath(entity))
    49                                          redirect_path=self.redirectpath(entity))
   144 class CellView(view.EntityView):
   144 class CellView(view.EntityView):
   145     id = 'cell'
   145     id = 'cell'
   146     __select__ = implements('TrInfo')
   146     __select__ = implements('TrInfo')
   147 
   147 
   148     def cell_call(self, row, col, cellvid=None):
   148     def cell_call(self, row, col, cellvid=None):
   149         self.w(self.entity(row, col).view('reledit', rtype='comment'))
   149         self.w(self.rset.get_entity(row, col).view('reledit', rtype='comment'))
   150 
   150 
   151 
   151 
   152 class StateInContextView(view.EntityView):
   152 class StateInContextView(view.EntityView):
   153     """convenience trick, State's incontext view should not be clickable"""
   153     """convenience trick, State's incontext view should not be clickable"""
   154     id = 'incontext'
   154     id = 'incontext'
   159                                      row=row, col=col)))
   159                                      row=row, col=col)))
   160 
   160 
   161 
   161 
   162 class WorkflowPrimaryView(primary.PrimaryView):
   162 class WorkflowPrimaryView(primary.PrimaryView):
   163     __select__ = implements('Workflow')
   163     __select__ = implements('Workflow')
   164     cache_max_age = 60*60*2 # stay in http cache for 2 hours by default
       
   165 
   164 
   166     def render_entity_attributes(self, entity):
   165     def render_entity_attributes(self, entity):
       
   166         self.w(entity.view('reledit', rtype='description'))
   167         self.w(u'<img src="%s" alt="%s"/>' % (
   167         self.w(u'<img src="%s" alt="%s"/>' % (
   168             xml_escape(entity.absolute_url(vid='wfgraph')),
   168             xml_escape(entity.absolute_url(vid='wfgraph')),
   169             xml_escape(self.req._('graphical workflow for %s') % entity.name)))
   169             xml_escape(self.req._('graphical workflow for %s') % entity.name)))
   170 
   170 
   171 
   171 
   230     content_type = 'image/png'
   230     content_type = 'image/png'
   231     __select__ = implements('Workflow')
   231     __select__ = implements('Workflow')
   232 
   232 
   233     def _generate(self, tmpfile):
   233     def _generate(self, tmpfile):
   234         """display schema information for an entity"""
   234         """display schema information for an entity"""
   235         entity = self.entity(self.row, self.col)
   235         entity = self.rset.get_entity(self.row, self.col)
   236         visitor = WorkflowVisitor(entity)
   236         visitor = WorkflowVisitor(entity)
   237         prophdlr = WorkflowDotPropsHandler(self.req)
   237         prophdlr = WorkflowDotPropsHandler(self.req)
   238         generator = GraphGenerator(DotBackend('workflow', 'LR',
   238         generator = GraphGenerator(DotBackend('workflow', 'LR',
   239                                               ratio='compress', size='30,12'))
   239                                               ratio='compress', size='30,12'))
   240         return generator.generate(visitor, prophdlr, tmpfile)
   240         return generator.generate(visitor, prophdlr, tmpfile)