work in progress: configurable work item listings
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3142 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
73d9365dd7
commit
c185f72eea
1 changed files with 28 additions and 2 deletions
|
@ -68,6 +68,18 @@ class BaseWorkItemsView(object):
|
||||||
if ts is not None:
|
if ts is not None:
|
||||||
return IWorkItems(ts)
|
return IWorkItems(ts)
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def workItemsCriteria(self):
|
||||||
|
result = {}
|
||||||
|
form = self.request.form
|
||||||
|
start = parseDate(form.get('wi_start'))
|
||||||
|
end = parseDate(form.get('wi_end'))
|
||||||
|
if end:
|
||||||
|
end += 3600 * 24 # include full end date
|
||||||
|
if start or end:
|
||||||
|
result['timeFromTo'] = (start, end)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
class WorkItemsView(BaseWorkItemsView, NodeView):
|
class WorkItemsView(BaseWorkItemsView, NodeView):
|
||||||
""" Standard view for showing work items for a node's target.
|
""" Standard view for showing work items for a node's target.
|
||||||
|
@ -82,7 +94,9 @@ class WorkItemsView(BaseWorkItemsView, NodeView):
|
||||||
workItems = self.workItems
|
workItems = self.workItems
|
||||||
if None in (workItems, target):
|
if None in (workItems, target):
|
||||||
return result
|
return result
|
||||||
for wi in workItems.query(task=util.getUidForObject(target)):
|
criteria = self.workItemsCriteria
|
||||||
|
criteria['task'] = util.getUidForObject(target)
|
||||||
|
for wi in workItems.query(**criteria):
|
||||||
result.append(WorkItemDetails(self, wi))
|
result.append(WorkItemDetails(self, wi))
|
||||||
return sorted(result, key=lambda x: x.track.timeStamp)
|
return sorted(result, key=lambda x: x.track.timeStamp)
|
||||||
|
|
||||||
|
@ -104,7 +118,10 @@ class UserWorkItems(BaseWorkItemsView, ConceptView):
|
||||||
return []
|
return []
|
||||||
result = []
|
result = []
|
||||||
for target in self.context.getParents([self.defaultPredicate]):
|
for target in self.context.getParents([self.defaultPredicate]):
|
||||||
for wi in workItems.query(userName=util.getUidForObject(target)):
|
criteria = dict(self.workItemsCriteria)
|
||||||
|
un = criteria.setdefault('userName', [])
|
||||||
|
un.append(util.getUidForObject(target))
|
||||||
|
for wi in workItems.query(**criteria):
|
||||||
result.append(WorkItemDetails(self, wi))
|
result.append(WorkItemDetails(self, wi))
|
||||||
return sorted(result, key=lambda x: x.track.timeStamp)
|
return sorted(result, key=lambda x: x.track.timeStamp)
|
||||||
|
|
||||||
|
@ -233,6 +250,8 @@ actions.register('createWorkitem', 'portlet', DialogAction,
|
||||||
# auxiliary functions
|
# auxiliary functions
|
||||||
|
|
||||||
def parseTime(s):
|
def parseTime(s):
|
||||||
|
if not s:
|
||||||
|
return None
|
||||||
if ':' in s:
|
if ':' in s:
|
||||||
h, m = [int(v) for v in s.split(':')]
|
h, m = [int(v) for v in s.split(':')]
|
||||||
else:
|
else:
|
||||||
|
@ -240,4 +259,11 @@ def parseTime(s):
|
||||||
return h * 3600 + m * 60
|
return h * 3600 + m * 60
|
||||||
|
|
||||||
def parseDateTime(s):
|
def parseDateTime(s):
|
||||||
|
if not s:
|
||||||
|
return None
|
||||||
return int(time.mktime(time.strptime(s, '%Y-%m-%dT%H:%M:%S')))
|
return int(time.mktime(time.strptime(s, '%Y-%m-%dT%H:%M:%S')))
|
||||||
|
|
||||||
|
def parseDate(s):
|
||||||
|
if not s:
|
||||||
|
return None
|
||||||
|
return int(time.mktime(time.strptime(s, '%Y-%m-%d')))
|
||||||
|
|
Loading…
Add table
Reference in a new issue