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) |