new fields: priority, activity

This commit is contained in:
Helmut Merz 2015-03-16 11:17:38 +01:00
parent 2c112703a3
commit beff6ef2dd
3 changed files with 71 additions and 14 deletions

View file

@ -524,7 +524,10 @@ class CreateWorkItemForm(ObjectForm, BaseTrackView):
return [dict(name=util.getUidForObject(p), title=p.title)
for p in persons]
taskTypes = ['task', 'event', 'agendaitem']
@Lazy
def taskTypes(self):
return (self.globalOptions('organize.work.task_types') or
['task', 'event', 'agendaitem'])
@Lazy
def followUpTask(self):
@ -544,6 +547,16 @@ class CreateWorkItemForm(ObjectForm, BaseTrackView):
return [dict(name=util.getUidForObject(t), title=t.title)
for t in tasks]
@Lazy
def priorities(self):
prio = self.conceptManager.get('organize.work.priorities')
return prio and adapted(prio).dataAsRecords or []
@Lazy
def activities(self):
act = self.conceptManager.get('organize.work.activities')
return act and adapted(act).dataAsRecords or []
@Lazy
def duration(self):
if self.state == 'running':
@ -610,6 +623,8 @@ class CreateWorkItem(EditObject, BaseTrackView):
result['deadline'] = parseDateTime('T'.join((deadline, deadlineTime)))
else:
result['deadline'] = None
result['priority'] = form.get('priority')
result['activity'] = form.get('activity')
startDate = form.get('start_date', '').strip()
endDate = form.get('end_date', '').strip() or startDate
startTime = form.get('start_time', '').strip().replace('T', '') or '00:00:00'

View file

@ -150,19 +150,48 @@
view.getUidForObject(view.followUpTask)" />
</span>
</div>
<div>
<div id="deadline"
tal:condition="python:'deadline' in workItemType.fields">
<label i18n:translate="" for="deadline-input">Deadline</label>
<div id="deadline-input">
<input type="text" name="deadline" style="width: 8em"
dojoType="dijit.form.DateTextBox"
tal:attributes="value view/deadline" />
<input type="text" name="deadline_time" style="width: 6em"
dojoType="dijit.form.TimeTextBox"
tal:condition="view/deadlineWithTime"
tal:attributes="value view/deadlineTime" />
</div>
<div id="deadline"
tal:condition="python:'deadline' in workItemType.fields">
<label i18n:translate="" for="deadline-input">Deadline</label>
<div id="deadline-input">
<input type="text" name="deadline" style="width: 8em"
dojoType="dijit.form.DateTextBox"
tal:attributes="value view/deadline" />
<input type="text" name="deadline_time" style="width: 6em"
dojoType="dijit.form.TimeTextBox"
tal:condition="view/deadlineWithTime"
tal:attributes="value view/deadlineTime" />
</div>
<div id="priority-activity"
tal:condition="python:'priority' in workItemType.fields or
'activity' in workItemType.fields">
<table style="width: auto">
<tr>
<td tal:condition="python:'priority' in workItemType.fields">
<label i18n:translate="" for="priority">Priority</label></td>
<td tal:condition="python:'activity' in workItemType.fields">
<label i18n:translate="" for="activity">Activity</label></td>
</tr>
<tr>
<td tal:condition="python:'priority' in workItemType.fields">
<select name="priority" id="priority"
tal:define="value view/track/data/priority|nothing">
<option tal:repeat="prio view/priorities"
tal:attributes="value prio/name;
selected python:prio['name'] == value"
tal:content="prio/title" />
</select>
</td>
<td tal:condition="python:'activity' in workItemType.fields">
<select name="activity" id="activity"
tal:define="value view/track/data/activity|nothing">
<option tal:repeat="act view/activities"
tal:attributes="value act/name;
selected python:act['name'] == value"
tal:content="act/title" />
</select>
</td>
</table>
</div>
<div id="start-end"
tal:condition="python:'start-end' in workItemType.fields">

View file

@ -93,6 +93,19 @@ class DataTable(AdapterBase):
self.context._data = OOBTree(data)
data = property(getData, setData)
@property
def dataAsRecords(self):
result = []
for k, v in sorted(self.data.items()):
item = {}
for idx, c in enumerate(self.columns):
if idx == 0:
item[c] = k
else:
item[c] = v[idx-1]
result.append(item)
return result
TypeInterfaceSourceList.typeInterfaces += (IDataTable,)