work in progress: view work items
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3098 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									a77166dfee
								
							
						
					
					
						commit
						94d38bbe2c
					
				
					 6 changed files with 79 additions and 6 deletions
				
			
		|  | @ -404,19 +404,16 @@ class BaseView(GenericView, I18NView): | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def versionId(self): |     def versionId(self): | ||||||
|         #versionable = IVersionable(self.context, None) |  | ||||||
|         versionable = IVersionable(self.target, None) |         versionable = IVersionable(self.target, None) | ||||||
|         return versionable and versionable.versionId or '' |         return versionable and versionable.versionId or '' | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def currentVersionId(self): |     def currentVersionId(self): | ||||||
|         #versionable = IVersionable(self.context, None) |  | ||||||
|         versionable = IVersionable(self.target, None) |         versionable = IVersionable(self.target, None) | ||||||
|         return versionable and versionable.currentVersion.versionId or '' |         return versionable and versionable.currentVersion.versionId or '' | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def hasVersions(self): |     def hasVersions(self): | ||||||
|         #versionable = IVersionable(self.context, None) |  | ||||||
|         versionable = IVersionable(self.target, None) |         versionable = IVersionable(self.target, None) | ||||||
|         return versionable and len(versionable.versions) > 1 or False |         return versionable and len(versionable.versions) > 1 or False | ||||||
| 
 | 
 | ||||||
|  | @ -424,8 +421,6 @@ class BaseView(GenericView, I18NView): | ||||||
|     def versionInfo(self): |     def versionInfo(self): | ||||||
|         if not self.useVersioning: |         if not self.useVersioning: | ||||||
|             return None |             return None | ||||||
|         #context = self.context |  | ||||||
|         #versionable = IVersionable(context, None) |  | ||||||
|         target = self.target |         target = self.target | ||||||
|         versionable = IVersionable(target, None) |         versionable = IVersionable(target, None) | ||||||
|         if versionable is None: |         if versionable is None: | ||||||
|  | @ -512,6 +507,11 @@ class BaseView(GenericView, I18NView): | ||||||
| 
 | 
 | ||||||
|     inlineEditable = False |     inlineEditable = False | ||||||
| 
 | 
 | ||||||
|  |     # work items | ||||||
|  |     @Lazy | ||||||
|  |     def workItems(self): | ||||||
|  |         return [] | ||||||
|  | 
 | ||||||
|     # comments |     # comments | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
|           <metal:fields use-macro="item/template/macros/conceptfields" /> |           <metal:fields use-macro="item/template/macros/conceptfields" /> | ||||||
|           <metal:fields use-macro="item/template/macros/conceptchildren" /> |           <metal:fields use-macro="item/template/macros/conceptchildren" /> | ||||||
|           <metal:fields use-macro="item/template/macros/conceptresources" /> |           <metal:fields use-macro="item/template/macros/conceptresources" /> | ||||||
|  |           <metal:fields use-macro="view/work_macros/workitems" /> | ||||||
|           <metal:fields use-macro="view/comment_macros/comments" /> |           <metal:fields use-macro="view/comment_macros/comments" /> | ||||||
|   </div> |   </div> | ||||||
| </metal:data> | </metal:data> | ||||||
|  |  | ||||||
|  | @ -482,8 +482,19 @@ class NodeView(BaseView): | ||||||
|         self.recordAccess('external_edit') |         self.recordAccess('external_edit') | ||||||
|         return ExternalEditorView(target, self.request).load(url=url) |         return ExternalEditorView(target, self.request).load(url=url) | ||||||
| 
 | 
 | ||||||
|     # comments |     # work items | ||||||
| 
 | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def work_macros(self): | ||||||
|  |         from loops.organize.work.browser import work_macros | ||||||
|  |         return work_macros.macros | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def workItems(self): | ||||||
|  |         return component.getMultiAdapter((self.context, self.request), | ||||||
|  |                                          name='workitems.html') | ||||||
|  | 
 | ||||||
|  |     # comments | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def comment_macros(self): |     def comment_macros(self): | ||||||
|  |  | ||||||
|  | @ -34,8 +34,10 @@ from cybertools.browser.action import actions | ||||||
| from cybertools.organize.interfaces import IWorkItems | from cybertools.organize.interfaces import IWorkItems | ||||||
| from loops.browser.action import DialogAction | from loops.browser.action import DialogAction | ||||||
| from loops.browser.form import ObjectForm, EditObject | from loops.browser.form import ObjectForm, EditObject | ||||||
|  | from loops.browser.node import NodeView | ||||||
| from loops.organize.party import getPersonForUser | from loops.organize.party import getPersonForUser | ||||||
| from loops.organize.tracking.browser import BaseTrackView | from loops.organize.tracking.browser import BaseTrackView | ||||||
|  | from loops.organize.tracking.report import TrackDetails | ||||||
| from loops import util | from loops import util | ||||||
| from loops.util import _ | from loops.util import _ | ||||||
| 
 | 
 | ||||||
|  | @ -43,6 +45,37 @@ from loops.util import _ | ||||||
| work_macros = ViewPageTemplateFile('work_macros.pt') | work_macros = ViewPageTemplateFile('work_macros.pt') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class WorkItemsView(NodeView): | ||||||
|  | 
 | ||||||
|  |     def __init__(self, context, request): | ||||||
|  |         self.context = context | ||||||
|  |         self.request = request | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def workItems(self): | ||||||
|  |         ts = self.loopsRoot.getRecordManager().get('work') | ||||||
|  |         if ts is not None: | ||||||
|  |             return IWorkItems(ts) | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def allWorkItems(self): | ||||||
|  |         result = [] | ||||||
|  |         target = self.virtualTargetObject | ||||||
|  |         workItems = self.workItems | ||||||
|  |         if None in (workItems, target): | ||||||
|  |             return result | ||||||
|  |         for wi in workItems.query(task=util.getUidForObject(target)): | ||||||
|  |             result.append(WorkItemDetails(self, wi)) | ||||||
|  |         return result | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class WorkItemDetails(TrackDetails): | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def description(self): | ||||||
|  |         return self.track.description | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class WorkItemView(BaseTrackView): | class WorkItemView(BaseTrackView): | ||||||
| 
 | 
 | ||||||
|     pass |     pass | ||||||
|  |  | ||||||
|  | @ -24,6 +24,12 @@ | ||||||
| 
 | 
 | ||||||
|   <!-- application views --> |   <!-- application views --> | ||||||
| 
 | 
 | ||||||
|  |   <browser:page | ||||||
|  |       name="workitems.html" | ||||||
|  |       for="loops.interfaces.INode" | ||||||
|  |       class="loops.organize.work.browser.WorkItemsView" | ||||||
|  |       permission="zope.View" /> | ||||||
|  | 
 | ||||||
|   <browser:page |   <browser:page | ||||||
|       name="create_workitem.html" |       name="create_workitem.html" | ||||||
|       for="loops.interfaces.INode" |       for="loops.interfaces.INode" | ||||||
|  |  | ||||||
|  | @ -2,6 +2,28 @@ | ||||||
| <!-- $Id$ --> | <!-- $Id$ --> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | <metal:work define-macro="workitems" | ||||||
|  |                 tal:define="workItems nocall:view/workItems" | ||||||
|  |                 tal:condition="workItems/allWorkItems"> | ||||||
|  |   <br /> | ||||||
|  |   <h2 i18n:translate="">Work Items</h2> | ||||||
|  |   <metal:workitems define-macro="workitems_listing" | ||||||
|  |                    tal:define="workItems nocall:workItems|nocall:view/workItems;"> | ||||||
|  |     <tal:workitem tal:repeat="workItem workItems/allWorkItems"> | ||||||
|  |       <br /> | ||||||
|  |       <div class="comment"> | ||||||
|  |         <h3> | ||||||
|  |           <span tal:content="workItem/description">Subject</span></h3> | ||||||
|  |         <div class="info"> | ||||||
|  |           <span tal:replace="workItem/user/title">John</span>, | ||||||
|  |           <span tal:replace="workItem/timeStamp">2007-03-30</span> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </tal:workitem> | ||||||
|  |   </metal:workitems> | ||||||
|  | </metal:work> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| <metal:block define-macro="create_workitem"> | <metal:block define-macro="create_workitem"> | ||||||
|     <form method="post" |     <form method="post" | ||||||
|           id="addWorkitem_form" class="dialog" |           id="addWorkitem_form" class="dialog" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm