allow editing of workitems on report

This commit is contained in:
Helmut Merz 2014-07-07 12:41:58 +02:00
parent 6dde146189
commit 1a8550995b
4 changed files with 28 additions and 3 deletions

View file

@ -80,6 +80,17 @@
</metal:state> </metal:state>
<metal:state define-macro="workitem_state">
<tal:column define="value python:col.getDisplayValue(row)"
condition="value">
<tal:action repeat="action value/actions">
<metal:action tal:condition="action"
use-macro="action/macro" />
</tal:action>
</tal:column>
</metal:state>
<metal:target define-macro="target"> <metal:target define-macro="target">
<tal:column define="value python:col.getDisplayValue(row)"> <tal:column define="value python:col.getDisplayValue(row)">
<a tal:omit-tag="python: <a tal:omit-tag="python:

View file

@ -32,6 +32,7 @@ from cybertools.util.date import timeStamp2Date
from cybertools.util.format import formatDate from cybertools.util.format import formatDate
from loops.common import baseObject from loops.common import baseObject
from loops.expert.report import ReportInstance from loops.expert.report import ReportInstance
from loops.organize.work.browser import WorkItemDetails
from loops import util from loops import util
@ -109,7 +110,7 @@ class DateField(Field):
class StateField(Field): class StateField(Field):
statesDefinition = 'workItemStates' statesDefinition = None
renderer = 'state' renderer = 'state'
def getDisplayValue(self, row): def getDisplayValue(self, row):
@ -126,6 +127,18 @@ class StateField(Field):
icon='cybertools.icons/' + icon) icon='cybertools.icons/' + icon)
class WorkItemStateField(Field):
statesDefinition = 'workItemStates'
renderer = 'workitem_state'
def getDisplayValue(self, row):
if row.context is None:
return None
details = WorkItemDetails(row.parent.context.view, row.context)
return dict(actions=details.actions())
class VocabularyField(Field): class VocabularyField(Field):
vocabulary = None vocabulary = None

View file

@ -229,7 +229,7 @@ The user interface is a ReportConceptView subclass that is directly associated w
08/12/28 19:00 20:15 08/12/28 19:00 20:15
{'url': '.../home/.36', 'title': u'loops Development'} {'url': '.../home/.36', 'title': u'loops Development'}
{'url': '.../home/.33', 'title': u'john'} 01:15 00:15 {'url': '.../home/.33', 'title': u'john'} 01:15 00:15
{'icon': 'cybertools.icons/ledgreen.png', 'title': u'finished'} {'actions': [...]}
>>> results.totals.data >>> results.totals.data
{'effort': 900} {'effort': 900}

View file

@ -37,6 +37,7 @@ from loops.expert.field import Field, TargetField, DateField, StateField, \
TextField, HtmlTextField, UrlField TextField, HtmlTextField, UrlField
from loops.expert.field import SubReport, SubReportField from loops.expert.field import SubReport, SubReportField
from loops.expert.field import TrackDateField, TrackTimeField from loops.expert.field import TrackDateField, TrackTimeField
from loops.expert.field import WorkItemStateField
from loops.expert.report import ReportInstance from loops.expert.report import ReportInstance
from loops import util from loops import util
@ -122,7 +123,7 @@ duration = DurationField('duration', u'Duration',
effort = DurationField('effort', u'Effort', effort = DurationField('effort', u'Effort',
description=u'The effort of the work.', description=u'The effort of the work.',
executionSteps=['output', 'totals']) executionSteps=['output', 'totals'])
state = StateField('state', u'State', state = WorkItemStateField('state', u'State',
description=u'The state of the work.', description=u'The state of the work.',
cssClass='center', cssClass='center',
statesDefinition='workItemStates', statesDefinition='workItemStates',