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"
|
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>
|
</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 IObjectAddedEvent, IObjectRemovedEvent
|
||||||
from zope.app.container.interfaces import IObjectMovedEvent
|
from zope.app.container.interfaces import IObjectMovedEvent
|
||||||
|
from zope.interface import implements
|
||||||
from zope.cachedescriptors.property import Lazy
|
from zope.cachedescriptors.property import Lazy
|
||||||
from zope.component import adapter
|
from zope.component import adapter
|
||||||
from zope.lifecycleevent.interfaces import IObjectModifiedEvent, IObjectCreatedEvent
|
from zope.lifecycleevent.interfaces import IObjectModifiedEvent, IObjectCreatedEvent
|
||||||
|
|
||||||
from cybertools.meta.interfaces import IOptions
|
from cybertools.meta.interfaces import IOptions
|
||||||
from cybertools.tracking.btree import Track, getTimeStamp
|
from cybertools.tracking.btree import Track, getTimeStamp
|
||||||
|
from cybertools.tracking.interfaces import ITrack
|
||||||
from loops.concept import ConceptManager
|
from loops.concept import ConceptManager
|
||||||
from loops.resource import ResourceManager
|
from loops.resource import ResourceManager
|
||||||
from loops.interfaces import IAssignmentEvent, IDeassignmentEvent
|
from loops.interfaces import IAssignmentEvent, IDeassignmentEvent
|
||||||
|
@ -97,8 +99,15 @@ class ChangeManager(object):
|
||||||
self.storage.saveUserTrack(uid, 0, personUid, data, update)
|
self.storage.saveUserTrack(uid, 0, personUid, data, update)
|
||||||
|
|
||||||
|
|
||||||
|
class IChangeRecord(ITrack):
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ChangeRecord(Track):
|
class ChangeRecord(Track):
|
||||||
|
|
||||||
|
implements(IChangeRecord)
|
||||||
|
|
||||||
typeName = 'ChangeRecord'
|
typeName = 'ChangeRecord'
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,29 @@
|
||||||
<!-- $Id$ -->
|
<!-- $Id$ -->
|
||||||
|
|
||||||
<configure
|
<configure
|
||||||
xmlns="http://namespaces.zope.org/zope"
|
xmlns:zope="http://namespaces.zope.org/zope"
|
||||||
|
xmlns:browser="http://namespaces.zope.org/browser"
|
||||||
i18n_domain="loops">
|
i18n_domain="loops">
|
||||||
|
|
||||||
<class class="loops.organize.tracking.change.ChangeRecord">
|
<zope:class class="loops.organize.tracking.change.ChangeRecord">
|
||||||
<require permission="zope.View"
|
<require permission="zope.View"
|
||||||
interface="cybertools.tracking.interfaces.ITrack" />
|
interface="cybertools.tracking.interfaces.ITrack" />
|
||||||
<require permission="zope.ManageContent"
|
<require permission="zope.ManageContent"
|
||||||
set_schema="cybertools.tracking.interfaces.ITrack" />
|
set_schema="cybertools.tracking.interfaces.ITrack" />
|
||||||
</class>
|
</zope:class>
|
||||||
|
|
||||||
<!--<class class="loops.organize.tracking.change.ChangeRecord">
|
<zope:adapter
|
||||||
<require permission="zope.View"
|
for="loops.organize.tracking.change.IChangeRecord
|
||||||
interface="cybertools.tracking.interfaces.ITrackingStorage" />
|
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||||
</class>-->
|
provides="zope.interface.Interface"
|
||||||
|
factory="loops.organize.tracking.browser.ChangeView"
|
||||||
|
permission="zope.View" />
|
||||||
|
|
||||||
<subscriber handler="loops.organize.tracking.change.recordModification" />
|
<zope:subscriber handler="loops.organize.tracking.change.recordModification" />
|
||||||
<subscriber handler="loops.organize.tracking.change.recordAssignment" />
|
<zope:subscriber handler="loops.organize.tracking.change.recordAssignment" />
|
||||||
<subscriber handler="loops.organize.tracking.change.recordDeassignment" />
|
<zope:subscriber handler="loops.organize.tracking.change.recordDeassignment" />
|
||||||
|
|
||||||
<adapter factory="loops.organize.tracking.setup.SetupManager"
|
<zope:adapter factory="loops.organize.tracking.setup.SetupManager"
|
||||||
name="organize.tracking" />
|
name="organize.tracking" />
|
||||||
|
|
||||||
</configure>
|
</configure>
|
||||||
|
|
|
@ -35,6 +35,8 @@ class RecordManager(BTreeContainer):
|
||||||
|
|
||||||
implements(IRecordManager, ILoopsContained)
|
implements(IRecordManager, ILoopsContained)
|
||||||
|
|
||||||
|
title = 'records'
|
||||||
|
|
||||||
def getLoopsRoot(self):
|
def getLoopsRoot(self):
|
||||||
return getParent(self)
|
return getParent(self)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue