allow for full overwrite of track data (not just dict update)

This commit is contained in:
Helmut Merz 2013-03-18 17:29:54 +01:00
parent 13d48b6ab0
commit 5abbc339e9

View file

@ -90,13 +90,16 @@ class Track(Persistent):
#def getName(self): #def getName(self):
# return self.__name__ # return self.__name__
def update(self, newData): def update(self, newData, overwrite=False):
if not newData: if not newData:
return return
self.timeStamp = getTimeStamp() self.timeStamp = getTimeStamp()
getParent(self).indexTrack(0, self, 'timeStamp') getParent(self).indexTrack(0, self, 'timeStamp')
data = self.data if overwrite:
data.update(newData) data = newData
else:
data = self.data
data.update(newData)
self.data = data # record change self.data = data # record change
def __repr__(self): def __repr__(self):
@ -196,7 +199,7 @@ class TrackingStorage(BTreeContainer):
return trackId, self.trackNum return trackId, self.trackNum
def saveUserTrack(self, taskId, runId, userName, data, update=False, def saveUserTrack(self, taskId, runId, userName, data, update=False,
timeStamp=None): timeStamp=None, overwrite=False):
ts = timeStamp or getTimeStamp() ts = timeStamp or getTimeStamp()
if not runId: if not runId:
runId = self.currentRuns.get(taskId) or self.startRun(taskId) runId = self.currentRuns.get(taskId) or self.startRun(taskId)
@ -208,7 +211,7 @@ class TrackingStorage(BTreeContainer):
if update: if update:
track = self.getLastUserTrack(taskId, runId, userName) track = self.getLastUserTrack(taskId, runId, userName)
if track is not None: if track is not None:
return self.updateTrack(track, data) return self.updateTrack(track, data, overwrite)
trackId, trackNum = self.generateTrackId() trackId, trackNum = self.generateTrackId()
track = self.trackFactory(taskId, runId, userName, data) track = self.trackFactory(taskId, runId, userName, data)
track.__parent__ = self track.__parent__ = self
@ -219,10 +222,10 @@ class TrackingStorage(BTreeContainer):
self.indexTrack(trackNum, track) self.indexTrack(trackNum, track)
return trackId return trackId
def updateTrack(self, track, data): def updateTrack(self, track, data, overwrite=False):
trackId = str(track.__name__) trackId = str(track.__name__)
trackNum = int(trackId) trackNum = int(trackId)
track.update(data) track.update(data, overwrite)
self.indexTrack(trackNum, track) self.indexTrack(trackNum, track)
return trackId return trackId