allow editing of track data in management interface
This commit is contained in:
		
							parent
							
								
									ed996977f9
								
							
						
					
					
						commit
						17af65c461
					
				
					 3 changed files with 108 additions and 0 deletions
				
			
		|  | @ -21,9 +21,11 @@ View classes for tracks. | |||
| """ | ||||
| 
 | ||||
| from zope import component | ||||
| from zope.app.pagetemplate import ViewPageTemplateFile | ||||
| from zope.app.security.interfaces import IAuthentication, PrincipalLookupError | ||||
| from zope.cachedescriptors.property import Lazy | ||||
| from zope.app.pagetemplate import ViewPageTemplateFile | ||||
| from zope.security.proxy import removeSecurityProxy | ||||
| from zope.traversing.browser import absoluteURL | ||||
| from zope.traversing.api import getName | ||||
| 
 | ||||
|  | @ -34,6 +36,8 @@ from loops.browser.form import ObjectForm, EditObject | |||
| from loops.organize.party import getPersonForUser | ||||
| from loops import util | ||||
| 
 | ||||
| track_edit_template = ViewPageTemplateFile('edit_track.pt') | ||||
| 
 | ||||
| 
 | ||||
| class BaseTrackView(TrackView): | ||||
| 
 | ||||
|  | @ -102,6 +106,30 @@ class BaseTrackView(TrackView): | |||
|         return self.request.principal.id | ||||
| 
 | ||||
| 
 | ||||
| class EditForm(BaseTrackView): | ||||
| 
 | ||||
|     template = track_edit_template | ||||
| 
 | ||||
|     def update(self): | ||||
|         form = self.request.form | ||||
|         if not form.get('form_submitted'): | ||||
|             return True | ||||
|         data = {} | ||||
|         print '*** update', form | ||||
|         for row in form.get('data') or []: | ||||
|             key = row['key'] | ||||
|             if not key: | ||||
|                 continue | ||||
|             value = row['value'] | ||||
|             # TODO: unmarshall value if necessary | ||||
|             data[key] = value | ||||
|         context = removeSecurityProxy(self.context) | ||||
|         context.data = data | ||||
|         return True | ||||
| 
 | ||||
| 
 | ||||
| # specialized views | ||||
| 
 | ||||
| class ChangeView(BaseTrackView): | ||||
| 
 | ||||
|     pass | ||||
|  |  | |||
|  | @ -82,6 +82,13 @@ | |||
|       class="loops.organize.tracking.browser.ChangeView" | ||||
|       permission="zope.View" /> | ||||
| 
 | ||||
|   <browser:page | ||||
|       name="edit.html" | ||||
|       for="cybertools.tracking.interfaces.ITrack" | ||||
|       class="loops.organize.tracking.browser.EditForm" | ||||
|       permission="loops.ManageSite" | ||||
|       menu="zmi_views" title="Edit" /> | ||||
| 
 | ||||
|   <browser:page | ||||
|       for="loops.organize.tracking.access.IAccessRecord" | ||||
|       name="index.html" | ||||
|  |  | |||
							
								
								
									
										73
									
								
								organize/tracking/edit_track.pt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								organize/tracking/edit_track.pt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | |||
| <tal:tag condition="view/update"> | ||||
| <html metal:use-macro="context/@@standard_macros/view" | ||||
|       i18n:domain="loops"> | ||||
| <body> | ||||
| 
 | ||||
| <div metal:fill-slot="body"> | ||||
|   <form action="." tal:attributes="action request/URL" method="post"> | ||||
|     <input type="hidden" name="form_submitted" value="true" /> | ||||
|     <h1>Edit Track <span tal:content="view/id" /></h1> | ||||
|     <div class="row"> | ||||
|       <table> | ||||
|         <tr> | ||||
|           <td>Task:</td> | ||||
|           <td><a tal:omit-tag="not:view/taskUrl" | ||||
|                  tal:attributes="href view/taskUrl" | ||||
|                  tal:content="view/taskTitle" /></td></tr> | ||||
|         <tr> | ||||
|           <td>Run:</td> | ||||
|           <td tal:content="view/run"></td></tr> | ||||
|         <tr> | ||||
|           <td>User:</td> | ||||
|           <td><a tal:define="userUrl view/userUrl|nothing" | ||||
|                  tal:omit-tag="not:userUrl" | ||||
|                  tal:attributes="href userUrl" | ||||
|                  tal:content="view/userTitle" /></td></tr> | ||||
|         <tr> | ||||
|           <td>Timestamp:</td> | ||||
|           <td tal:content="view/timeStamp"></td></tr> | ||||
|         <tr tal:repeat="key view/additionalMetadataFields"> | ||||
|           <td><span tal:replace="key" />:</td> | ||||
|           <td><a tal:define="target python: view.getMetadataTarget(key)" | ||||
|                  tal:omit-tag="not:target/url" | ||||
|                  tal:attributes="href target/url" | ||||
|                  tal:content="python: target['title'] or '???'" /></td></tr> | ||||
|       </table> | ||||
|     </div> | ||||
|     <h2>Data</h2> | ||||
|     <div class="row"> | ||||
|       <table width="100%"> | ||||
|         <tr> | ||||
|           <th>Key</th> | ||||
|           <th>Value</th> | ||||
|         </tr> | ||||
|         <tr tal:repeat="row python:sorted(context.data.items())"> | ||||
|           <td> | ||||
|             <input name="data.key:records" | ||||
|                    tal:attributes="value python:row[0]" /></td> | ||||
|           <td style="width: 100%"> | ||||
|             <input name="data.value:records" | ||||
|                    style="width: 100%" | ||||
|                    tal:attributes="value python:row[1]" /></td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <td> | ||||
|             <input name="data.key:records" /></td> | ||||
|           <td style="width: 100%"> | ||||
|             <input name="data.value:records" | ||||
|                    style="width: 100%" /></td> | ||||
|         </tr> | ||||
|       </table> | ||||
|       <div class="row"> | ||||
|         <div class="controls"> | ||||
|           <input type="submit" name="UPDATE_SUBMIT" value="Change" | ||||
|                  i18n:attributes="value submit-button;" /> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </form> | ||||
| </div> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
| </tal:tag> | ||||
		Loading…
	
	Add table
		
		Reference in a new issue