saveUserTrack: parameter 'update' instead of 'replace'
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@1710 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
34f20329d7
commit
618ea75bb5
3 changed files with 16 additions and 14 deletions
|
@ -56,13 +56,13 @@ Instead of creating a new track object for each call one can also replace
|
|||
an existing one (if present). The replaced entry is always the last one
|
||||
for a given set of keys.
|
||||
|
||||
>>> tracks.saveUserTrack('a001', 0, 'u1', {'somekey': 'newvalue2'}, replace=True)
|
||||
>>> tracks.saveUserTrack('a001', 0, 'u1', {'somekey': 'newvalue2'}, update=True)
|
||||
'0000003'
|
||||
>>> t3 = tracks.getUserTracks('a001', 0, 'u1')
|
||||
>>> [t.data for t in t3]
|
||||
[{'somekey': 'somevalue'}, {'somekey': 'newvalue2'}]
|
||||
|
||||
>>> tracks.saveUserTrack('a001', 0, 'u2', {'somekey': 'user2'}, replace=True)
|
||||
>>> tracks.saveUserTrack('a001', 0, 'u2', {'somekey': 'user2'}, update=True)
|
||||
'0000004'
|
||||
>>> t4 = tracks.getUserTracks('a001', 0, 'u2')
|
||||
>>> [t.data for t in t4]
|
||||
|
@ -124,7 +124,3 @@ We can also mark earlier runs by stopping them.
|
|||
>>> tracks.getRun(runId=2)
|
||||
<Run 2, ..., ..., True>
|
||||
|
||||
|
||||
Fin de partie
|
||||
=============
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ class TrackingStorage(BTreeContainer):
|
|||
return self.runs.get(runId)
|
||||
return None
|
||||
|
||||
def saveUserTrack(self, taskId, runId, userName, data, replace=False):
|
||||
def saveUserTrack(self, taskId, runId, userName, data, update=False):
|
||||
if not runId:
|
||||
runId = self.currentRuns.get(taskId) or self.startRun(taskId)
|
||||
run = self.getRun(runId=runId)
|
||||
|
@ -108,17 +108,19 @@ class TrackingStorage(BTreeContainer):
|
|||
raise ValueError('Invalid run: %i.' % runId)
|
||||
run.end = getTimeStamp()
|
||||
trackNum = 0
|
||||
if replace:
|
||||
if update:
|
||||
track = self.getLastUserTrack(taskId, runId, userName)
|
||||
if track:
|
||||
trackId = str(track.__name__)
|
||||
trackNum = int(trackId)
|
||||
del self[trackId]
|
||||
track.data.update(data)
|
||||
self.indexTrack(trackNum, track)
|
||||
return trackId
|
||||
if not trackNum:
|
||||
self.trackNum += 1
|
||||
trackNum = self.trackNum
|
||||
trackId = self.idFromNum(trackNum)
|
||||
track = Track(taskId, runId, userName, getTimeStamp(), data)
|
||||
track = Track(taskId, runId, userName, data)
|
||||
self[trackId] = track
|
||||
self.indexTrack(trackNum, track)
|
||||
return trackId
|
||||
|
@ -183,11 +185,15 @@ class Track(Persistent):
|
|||
def metadata(self):
|
||||
return dict((attr, getattr(self, attr)) for attr in self.metadata_attributes)
|
||||
|
||||
def __init__(self, taskId, runId, userName, timeStamp, data={}):
|
||||
def __init__(self, taskId, runId, userName, data={}):
|
||||
self.taskId = taskId
|
||||
self.runId = runId
|
||||
self.userName = userName
|
||||
self.timeStamp = timeStamp
|
||||
self.timeStamp = getTimeStamp()
|
||||
self.data = data
|
||||
|
||||
def update(self, data):
|
||||
self.timeStamp = getTimeStamp()
|
||||
self.data = data
|
||||
|
||||
def __repr__(self):
|
||||
|
|
|
@ -72,11 +72,11 @@ class ITrackingStorage(Interface):
|
|||
current run of the task.
|
||||
"""
|
||||
|
||||
def saveUserTrack(taskId, runId, userName, data, replace=False):
|
||||
def saveUserTrack(taskId, runId, userName, data, update=False):
|
||||
""" Save the data given (typically a mapping object) to the user track
|
||||
corresponding to the user name, task id, and run id given.
|
||||
If the runId is 0 use the task's current run.
|
||||
If the ``replace`` flag is set, the new track replaces the last
|
||||
If the ``update`` flag is set, the new track updates the last
|
||||
one for the given set of keys.
|
||||
Return the new track item's id.
|
||||
"""
|
||||
|
|
Loading…
Add table
Reference in a new issue