improve migration: use list of ids for access to source collection
This commit is contained in:
parent
f51f3d4f25
commit
086868d5b7
2 changed files with 11 additions and 9 deletions
|
@ -14,16 +14,16 @@ from loops.storage.compat.common import Storage
|
||||||
from loops import util
|
from loops import util
|
||||||
|
|
||||||
|
|
||||||
def migrate(loopsRoot, source, factory=tracking.Container,
|
def migrate(loopsRoot, recFolderName, sourceIds=None, factory=tracking.Container,
|
||||||
start=0, stop=None, step=10, autoDelete=False):
|
start=0, stop=None, step=10, autoDelete=False):
|
||||||
if isinstance(source, basestring):
|
rf = loopsRoot.getRecordManager().get(recFolderName)
|
||||||
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
|
if sourceIds is None:
|
||||||
items = list(rf.items()[start:stop])
|
trackIds = list(rf.keys()[start:stop])
|
||||||
else:
|
else:
|
||||||
items = [(s.__name__, s) for s in source[start:stop]]
|
trackIds = sourceIds[start:stop]
|
||||||
options = LoopsOptions(loopsRoot)
|
options = LoopsOptions(loopsRoot)
|
||||||
#print('*** database:', config.dbname, config.dbuser, config.dbpassword)
|
#print('*** database:', config.dbname, config.dbuser, config.dbpassword)
|
||||||
schema = options('scopes.storage.schema') or None
|
schema = options('scopes.storage.schema') or None
|
||||||
|
@ -34,7 +34,8 @@ def migrate(loopsRoot, source, factory=tracking.Container,
|
||||||
container = storage.create(factory)
|
container = storage.create(factory)
|
||||||
ix = 0
|
ix = 0
|
||||||
prefix = factory.itemFactory.prefix
|
prefix = factory.itemFactory.prefix
|
||||||
for ix, (id, inTrack) in enumerate(items):
|
for ix, id in enumerate(trackIds):
|
||||||
|
inTrack = rf[id]
|
||||||
id = int(id)
|
id = int(id)
|
||||||
ts = datetime.fromtimestamp(inTrack.timeStamp)
|
ts = datetime.fromtimestamp(inTrack.timeStamp)
|
||||||
#print('*** in:', id, inTrack)
|
#print('*** in:', id, inTrack)
|
||||||
|
|
|
@ -27,6 +27,7 @@ class TestStorage(common.TestCase):
|
||||||
self.assertEqual(str(self.g.storage.engine.url),
|
self.assertEqual(str(self.g.storage.engine.url),
|
||||||
'postgresql://ccotest:cco@localhost:5432/ccotest')
|
'postgresql://ccotest:cco@localhost:5432/ccotest')
|
||||||
self.g.storage.dropTable('favorites')
|
self.g.storage.dropTable('favorites')
|
||||||
|
self.g.storage.dropTable('uid_mapping')
|
||||||
component.provideAdapter(FavoritesAdapter)
|
component.provideAdapter(FavoritesAdapter)
|
||||||
self.assertEqual(getName(self.loopsRoot), 'loops')
|
self.assertEqual(getName(self.loopsRoot), 'loops')
|
||||||
self.assertEqual(getName(self.g.concepts), 'concepts')
|
self.assertEqual(getName(self.g.concepts), 'concepts')
|
||||||
|
|
Loading…
Add table
Reference in a new issue