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