provide special view for change records
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2583 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
3d8b566b87
commit
a22d020e6b
5 changed files with 104 additions and 12 deletions
|
@ -55,4 +55,19 @@
|
|||
permission="zope.View"
|
||||
/>
|
||||
|
||||
<browser:page
|
||||
for="cybertools.tracking.interfaces.ITrackingStorage"
|
||||
name="index.html"
|
||||
class="cybertools.tracking.browser.TrackingStorageView"
|
||||
permission="zope.View"
|
||||
/>
|
||||
|
||||
<zope:adapter
|
||||
for="cybertools.tracking.interfaces.ITrack
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="cybertools.tracking.browser.TrackView"
|
||||
permission="zope.View"
|
||||
/>
|
||||
|
||||
</configure>
|
||||
|
|
63
organize/tracking/browser.py
Normal file
63
organize/tracking/browser.py
Normal file
|
@ -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)
|
|
@ -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'
|
||||
|
||||
|
||||
|
|
|
@ -1,26 +1,29 @@
|
|||
<!-- $Id$ -->
|
||||
|
||||
<configure
|
||||
xmlns="http://namespaces.zope.org/zope"
|
||||
xmlns:zope="http://namespaces.zope.org/zope"
|
||||
xmlns:browser="http://namespaces.zope.org/browser"
|
||||
i18n_domain="loops">
|
||||
|
||||
<class class="loops.organize.tracking.change.ChangeRecord">
|
||||
<zope:class class="loops.organize.tracking.change.ChangeRecord">
|
||||
<require permission="zope.View"
|
||||
interface="cybertools.tracking.interfaces.ITrack" />
|
||||
<require permission="zope.ManageContent"
|
||||
set_schema="cybertools.tracking.interfaces.ITrack" />
|
||||
</class>
|
||||
</zope:class>
|
||||
|
||||
<!--<class class="loops.organize.tracking.change.ChangeRecord">
|
||||
<require permission="zope.View"
|
||||
interface="cybertools.tracking.interfaces.ITrackingStorage" />
|
||||
</class>-->
|
||||
<zope:adapter
|
||||
for="loops.organize.tracking.change.IChangeRecord
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="loops.organize.tracking.browser.ChangeView"
|
||||
permission="zope.View" />
|
||||
|
||||
<subscriber handler="loops.organize.tracking.change.recordModification" />
|
||||
<subscriber handler="loops.organize.tracking.change.recordAssignment" />
|
||||
<subscriber handler="loops.organize.tracking.change.recordDeassignment" />
|
||||
<zope:subscriber handler="loops.organize.tracking.change.recordModification" />
|
||||
<zope:subscriber handler="loops.organize.tracking.change.recordAssignment" />
|
||||
<zope:subscriber handler="loops.organize.tracking.change.recordDeassignment" />
|
||||
|
||||
<adapter factory="loops.organize.tracking.setup.SetupManager"
|
||||
name="organize.tracking" />
|
||||
<zope:adapter factory="loops.organize.tracking.setup.SetupManager"
|
||||
name="organize.tracking" />
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -35,6 +35,8 @@ class RecordManager(BTreeContainer):
|
|||
|
||||
implements(IRecordManager, ILoopsContained)
|
||||
|
||||
title = 'records'
|
||||
|
||||
def getLoopsRoot(self):
|
||||
return getParent(self)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue