diff --git a/storage/compat/common.py b/storage/compat/common.py index 298975f..9de5ce6 100644 --- a/storage/compat/common.py +++ b/storage/compat/common.py @@ -12,8 +12,8 @@ class Storage(common.Storage): uidTable = None - def __init__(self, schema=None): - super(Storage, self).__init__(schema) + def __init__(self, db, schema=None): + super(Storage, self).__init__(db, schema) self.uidTable = self.getUidTable(self.schema) def storeUid(self, ouid, prefix, id): diff --git a/storage/migration/tracking.py b/storage/migration/tracking.py index 9112424..f07ad57 100644 --- a/storage/migration/tracking.py +++ b/storage/migration/tracking.py @@ -5,12 +5,8 @@ from datetime import datetime import transaction -import config -import scopes.storage.common -from scopes.storage.common import getEngine, sessionFactory from scopes.storage import tracking from loops.config.base import LoopsOptions -from loops.storage.compat.common import Storage from loops import util @@ -25,12 +21,11 @@ def migrate(loopsRoot, recFolderName, sourceIds=None, factory=tracking.Container else: trackIds = sourceIds[start:stop] options = LoopsOptions(loopsRoot) - #print('*** database:', config.dbname, config.dbuser, config.dbpassword) schema = options('scopes.storage.schema') or None if schema is not None: schema = schema[0] #print('*** schema:', schema) - storage = Storage(schema=schema) + storage = util.storageFactory(schema=schema) container = storage.create(factory) ix = 0 prefix = factory.itemFactory.prefix diff --git a/storage/tests/common.py b/storage/tests/common.py index df02f62..cac4364 100644 --- a/storage/tests/common.py +++ b/storage/tests/common.py @@ -4,17 +4,9 @@ """ import config -import scopes.storage.common -from scopes.storage.common import getEngine, sessionFactory - config.dbname = 'ccotest' config.dbuser = 'ccotest' config.dbpassword = 'cco' -engine = getEngine(config.dbengine, config.dbname, - config.dbuser, config.dbpassword, - host=config.dbhost, port=config.dbport) -scopes.storage.common.engine = engine -scopes.storage.common.Session = sessionFactory(engine) import unittest from zope import component, interface @@ -26,6 +18,11 @@ from loops.organize.tests import setupObjectsForTesting from loops.storage.compat.common import Storage from loops import util +from scopes.storage.db.postgres import StorageFactory + +factory = StorageFactory(config, storageClass=Storage) +storage = factory(schema='testing') + class Glob(object): pass @@ -44,7 +41,7 @@ class TestCase(unittest.TestCase): loopsId = util.getUidForObject(loopsRoot) setupData = setupObjectsForTesting(site, g.concepts) g.johnC = setupData.johnC - g.storage = Storage(schema='testing') + g.storage = storage @classmethod def cleanup(cls): diff --git a/storage/tests/test_storage.py b/storage/tests/test_storage.py index 5220126..3e4f0c7 100644 --- a/storage/tests/test_storage.py +++ b/storage/tests/test_storage.py @@ -9,7 +9,6 @@ import transaction from zope import component from zope.traversing.api import getName -import config from loops.concept import Concept from loops.config.base import LoopsOptions from loops.organize.personal.favorite import Favorites as FavoritesAdapter diff --git a/util.py b/util.py index 4877e25..aecdb95 100644 --- a/util.py +++ b/util.py @@ -22,21 +22,17 @@ try: except ImportError: markdown = None -import config -import scopes.storage.common -from scopes.storage.common import Storage, getEngine, sessionFactory import cybertools from cybertools.meta.interfaces import IOptions from loops.browser.util import html_quote +from loops.storage.compat.common import Storage + +import config +from scopes.storage.db.postgres import StorageFactory +storageFactory = StorageFactory(config, storageClass=Storage) _ = MessageFactory('loops') -engine = getEngine(config.dbengine, config.dbname, - config.dbuser, config.dbpassword, - host=config.dbhost, port=config.dbport) -scopes.storage.common.engine = engine -scopes.storage.common.Session = sessionFactory(engine) - renderingFactories = { 'text/plain': 'zope.source.plaintext', 'text/stx': 'zope.source.stx',