unindex track on removal

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3100 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-12-30 22:51:57 +00:00
parent 3530b7045a
commit 1f4985c996
2 changed files with 23 additions and 5 deletions

View file

@ -26,12 +26,15 @@ import time
from persistent import Persistent from persistent import Persistent
from BTrees import OOBTree, IOBTree from BTrees import OOBTree, IOBTree
from BTrees.IFBTree import intersection, union from BTrees.IFBTree import intersection, union
from zope.component import adapter
from zope.interface import implements from zope.interface import implements
from zope.app.container.btree import BTreeContainer from zope.app.container.btree import BTreeContainer
from zope.app.container.interfaces import IObjectRemovedEvent
from zope.index.field import FieldIndex from zope.index.field import FieldIndex
from zope.traversing.api import getParent
from zope.traversing.interfaces import IPhysicallyLocatable from zope.traversing.interfaces import IPhysicallyLocatable
from interfaces import IRun, ITrackingStorage, ITrack from cybertools.tracking.interfaces import IRun, ITrackingStorage, ITrack
class Run(object): class Run(object):
@ -53,7 +56,8 @@ class Run(object):
class Track(Persistent): class Track(Persistent):
implements(ITrack, IPhysicallyLocatable) #implements(ITrack, IPhysicallyLocatable)
implements(ITrack)
metadata_attributes = ('taskId', 'runId', 'userName', 'timeStamp') metadata_attributes = ('taskId', 'runId', 'userName', 'timeStamp')
index_attributes = metadata_attributes index_attributes = metadata_attributes
@ -72,8 +76,8 @@ class Track(Persistent):
self.timeStamp = getTimeStamp() self.timeStamp = getTimeStamp()
self.data = data self.data = data
def getName(self): #def getName(self):
return self.__name__ # return self.__name__
def update(self, newData): def update(self, newData):
if not newData: if not newData:
@ -225,8 +229,13 @@ class TrackingStorage(BTreeContainer):
self.taskUsers[taskId] = OOBTree.OOTreeSet() self.taskUsers[taskId] = OOBTree.OOTreeSet()
self.taskUsers[taskId].update([userName]) self.taskUsers[taskId].update([userName])
def unindexTrack(self, trackNum, track):
for attr in self.indexAttributes:
self.indexes[attr].unindex_doc(trackNum)
def reindexTracks(self): def reindexTracks(self):
# TODO: clear indexes for attr in self.trackFactory.index_attributes:
self.indexes[attr].clear()
for trackId in self: for trackId in self:
trackNum = int(trackId) trackNum = int(trackId)
self.indexTrack(trackNum, self[trackId]) self.indexTrack(trackNum, self[trackId])
@ -285,3 +294,8 @@ def timeStamp2ISO(ts):
def getTimeStamp(): def getTimeStamp():
return int(time.time()) return int(time.time())
@adapter(ITrack, IObjectRemovedEvent)
def unindexTrack(context, event):
getParent(context).unindexTrack(int(context.__name__), context)

View file

@ -46,6 +46,10 @@ class ITrack(Interface):
metadata = Attribute('A mapping with the track\'s metadata') metadata = Attribute('A mapping with the track\'s metadata')
indexdata = Attribute('A mapping with the data to be used for indexing') indexdata = Attribute('A mapping with the data to be used for indexing')
#def getName():
# """ Return the internal name (ID) of the track.
# """
class ITrackingStorage(Interface): class ITrackingStorage(Interface):
""" A utility for storing user tracks. """ A utility for storing user tracks.