improve / fix tracking migration
This commit is contained in:
parent
75fdced678
commit
536903f3d8
1 changed files with 12 additions and 3 deletions
|
@ -15,13 +15,13 @@ from loops import util
|
||||||
|
|
||||||
|
|
||||||
def migrate(loopsRoot, source, factory=tracking.Container,
|
def migrate(loopsRoot, source, factory=tracking.Container,
|
||||||
start=0, stop=None, step=10):
|
start=0, stop=None, step=10, autoDelete=False):
|
||||||
if isinstance(source, basestring):
|
if isinstance(source, basestring):
|
||||||
rf = loopsRoot.getRecordManager().get(source)
|
rf = loopsRoot.getRecordManager().get(source)
|
||||||
if rf is None:
|
if rf is None:
|
||||||
print('*** ERROR: folder %r not found!' % recFolderName)
|
print('*** ERROR: folder %r not found!' % recFolderName)
|
||||||
return
|
return
|
||||||
items = rf.items()[start:stop]
|
items = list(rf.items()[start:stop])
|
||||||
else:
|
else:
|
||||||
items = [(s.__name__, s) for s in source[start:stop]]
|
items = [(s.__name__, s) for s in source[start:stop]]
|
||||||
options = LoopsOptions(loopsRoot)
|
options = LoopsOptions(loopsRoot)
|
||||||
|
@ -32,18 +32,27 @@ def migrate(loopsRoot, source, factory=tracking.Container,
|
||||||
#print('*** schema:', schema)
|
#print('*** schema:', schema)
|
||||||
storage = Storage(schema=schema)
|
storage = Storage(schema=schema)
|
||||||
container = storage.create(factory)
|
container = storage.create(factory)
|
||||||
|
ix = 0
|
||||||
for ix, (id, inTrack) in enumerate(items):
|
for ix, (id, inTrack) in enumerate(items):
|
||||||
ts = datetime.fromtimestamp(inTrack.timeStamp)
|
ts = datetime.fromtimestamp(inTrack.timeStamp)
|
||||||
#print('*** in:', id, inTrack)
|
#print('*** in:', id, inTrack)
|
||||||
head = [inTrack.metadata[k] for k in container.itemFactory.headFields]
|
head = [inTrack.metadata[k] for k in container.itemFactory.headFields]
|
||||||
|
data = inTrack.data
|
||||||
#print('*** out:', head, ts)
|
#print('*** out:', head, ts)
|
||||||
|
for k, v in inTrack.__dict__.items():
|
||||||
|
if k[0] == '_' and k[1] != '_':
|
||||||
|
print('*** _field!', k, v, head)
|
||||||
|
data[k] = v
|
||||||
track = container.itemFactory(*head, trackId=int(id),
|
track = container.itemFactory(*head, trackId=int(id),
|
||||||
timeStamp=ts, data=inTrack.data)
|
timeStamp=ts, data=data)
|
||||||
container.upsert(track)
|
container.upsert(track)
|
||||||
ouid = util.getUidForObject(inTrack)
|
ouid = util.getUidForObject(inTrack)
|
||||||
storage.storeUid(ouid, track.uid)
|
storage.storeUid(ouid, track.uid)
|
||||||
|
if autoDelete:
|
||||||
|
inTrack.__parent__.removeTrack(inTrack)
|
||||||
if divmod(ix+1, step)[1] == 0:
|
if divmod(ix+1, step)[1] == 0:
|
||||||
print('*** migrated %d' % (ix + 1 + start))
|
print('*** migrated %d' % (ix + 1 + start))
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
|
print('*** migrated %d' % (ix + 1 + start))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue