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:
helmutm 2009-01-11 18:32:49 +00:00
parent 73d9365dd7
commit c185f72eea

View file

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