From 17af65c46194b6ebd3d07c83db66b7a8f1ecef8e Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 17 Jun 2014 14:40:33 +0200 Subject: [PATCH] allow editing of track data in management interface --- organize/tracking/browser.py | 28 ++++++++++++ organize/tracking/configure.zcml | 7 +++ organize/tracking/edit_track.pt | 73 ++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 organize/tracking/edit_track.pt diff --git a/organize/tracking/browser.py b/organize/tracking/browser.py index 33e82bb..cbe486d 100644 --- a/organize/tracking/browser.py +++ b/organize/tracking/browser.py @@ -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 diff --git a/organize/tracking/configure.zcml b/organize/tracking/configure.zcml index 6c81981..016ddf5 100644 --- a/organize/tracking/configure.zcml +++ b/organize/tracking/configure.zcml @@ -82,6 +82,13 @@ class="loops.organize.tracking.browser.ChangeView" permission="zope.View" /> + + + + + +
+
+ +

Edit Track

+
+ + + + + + + + + + + + + + + + +
Task:
Run:
User:
Timestamp:
:
+
+

Data

+
+ + + + + + + + + + + + + +
KeyValue
+ +
+ +
+
+
+ +
+
+
+
+
+ + + +