From a22d020e6b6af594cf9eb6c8b6cbb1ce57c3ba1b Mon Sep 17 00:00:00 2001 From: helmutm Date: Thu, 8 May 2008 14:41:55 +0000 Subject: [PATCH] provide special view for change records git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2583 fd906abe-77d9-0310-91a1-e0d9ade77398 --- organize/browser/configure.zcml | 15 ++++++++ organize/tracking/browser.py | 63 ++++++++++++++++++++++++++++++++ organize/tracking/change.py | 9 +++++ organize/tracking/configure.zcml | 27 ++++++++------ record.py | 2 + 5 files changed, 104 insertions(+), 12 deletions(-) create mode 100644 organize/tracking/browser.py diff --git a/organize/browser/configure.zcml b/organize/browser/configure.zcml index 7cbe637..786d35f 100644 --- a/organize/browser/configure.zcml +++ b/organize/browser/configure.zcml @@ -55,4 +55,19 @@ permission="zope.View" /> + + + + diff --git a/organize/tracking/browser.py b/organize/tracking/browser.py new file mode 100644 index 0000000..9b860dd --- /dev/null +++ b/organize/tracking/browser.py @@ -0,0 +1,63 @@ +# +# Copyright (c) 2008 Helmut Merz helmutm@cy55.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +""" +View class(es) for change tracks. + +$Id$ +""" + +from zope.cachedescriptors.property import Lazy +from zope.traversing.browser import absoluteURL +from zope.traversing.api import getName + +from cybertools.tracking.browser import TrackView +from loops import util + + +class ChangeView(TrackView): + + @Lazy + def task(self): + uid = self.metadata['taskId'] + return util.getObjectForUid(uid) + + @Lazy + def taskTitle(self): + return getattr(self.task, 'title', getName(self.task)) + + @Lazy + def taskUrl(self): + task = self.task + if task is not None: + return '%s/@@SelectedManagementView.html' % absoluteURL(task, self.request) + + @Lazy + def user(self): + uid = self.metadata['userName'] + return util.getObjectForUid(uid) + + @Lazy + def userTitle(self): + return getattr(self.user, 'title', getName(self.user)) + + @Lazy + def userUrl(self): + user = self.user + if user is not None: + return '%s/@@SelectedManagementView.html' % absoluteURL(user, self.request) diff --git a/organize/tracking/change.py b/organize/tracking/change.py index 2946849..b9d8565 100644 --- a/organize/tracking/change.py +++ b/organize/tracking/change.py @@ -24,12 +24,14 @@ $Id$ from zope.app.container.interfaces import IObjectAddedEvent, IObjectRemovedEvent from zope.app.container.interfaces import IObjectMovedEvent +from zope.interface import implements from zope.cachedescriptors.property import Lazy from zope.component import adapter from zope.lifecycleevent.interfaces import IObjectModifiedEvent, IObjectCreatedEvent from cybertools.meta.interfaces import IOptions from cybertools.tracking.btree import Track, getTimeStamp +from cybertools.tracking.interfaces import ITrack from loops.concept import ConceptManager from loops.resource import ResourceManager from loops.interfaces import IAssignmentEvent, IDeassignmentEvent @@ -97,8 +99,15 @@ class ChangeManager(object): self.storage.saveUserTrack(uid, 0, personUid, data, update) +class IChangeRecord(ITrack): + + pass + + class ChangeRecord(Track): + implements(IChangeRecord) + typeName = 'ChangeRecord' diff --git a/organize/tracking/configure.zcml b/organize/tracking/configure.zcml index 40b8cdc..3e8c730 100644 --- a/organize/tracking/configure.zcml +++ b/organize/tracking/configure.zcml @@ -1,26 +1,29 @@ - + - + - + - - - + + + - + diff --git a/record.py b/record.py index 704c4bf..1a2fabb 100644 --- a/record.py +++ b/record.py @@ -35,6 +35,8 @@ class RecordManager(BTreeContainer): implements(IRecordManager, ILoopsContained) + title = 'records' + def getLoopsRoot(self): return getParent(self)