fix storage creation according to new implementation of storage setup with StorageFactory

This commit is contained in:
Helmut Merz 2024-03-09 21:13:01 +01:00
parent 81fef0e1d5
commit 3c82ec9fdc
5 changed files with 14 additions and 27 deletions

View file

@ -12,8 +12,8 @@ class Storage(common.Storage):
uidTable = None uidTable = None
def __init__(self, schema=None): def __init__(self, db, schema=None):
super(Storage, self).__init__(schema) super(Storage, self).__init__(db, schema)
self.uidTable = self.getUidTable(self.schema) self.uidTable = self.getUidTable(self.schema)
def storeUid(self, ouid, prefix, id): def storeUid(self, ouid, prefix, id):

View file

@ -5,12 +5,8 @@
from datetime import datetime from datetime import datetime
import transaction import transaction
import config
import scopes.storage.common
from scopes.storage.common import getEngine, sessionFactory
from scopes.storage import tracking from scopes.storage import tracking
from loops.config.base import LoopsOptions from loops.config.base import LoopsOptions
from loops.storage.compat.common import Storage
from loops import util from loops import util
@ -25,12 +21,11 @@ def migrate(loopsRoot, recFolderName, sourceIds=None, factory=tracking.Container
else: else:
trackIds = sourceIds[start:stop] trackIds = sourceIds[start:stop]
options = LoopsOptions(loopsRoot) options = LoopsOptions(loopsRoot)
#print('*** database:', config.dbname, config.dbuser, config.dbpassword)
schema = options('scopes.storage.schema') or None schema = options('scopes.storage.schema') or None
if schema is not None: if schema is not None:
schema = schema[0] schema = schema[0]
#print('*** schema:', schema) #print('*** schema:', schema)
storage = Storage(schema=schema) storage = util.storageFactory(schema=schema)
container = storage.create(factory) container = storage.create(factory)
ix = 0 ix = 0
prefix = factory.itemFactory.prefix prefix = factory.itemFactory.prefix

View file

@ -4,17 +4,9 @@
""" """
import config import config
import scopes.storage.common
from scopes.storage.common import getEngine, sessionFactory
config.dbname = 'ccotest' config.dbname = 'ccotest'
config.dbuser = 'ccotest' config.dbuser = 'ccotest'
config.dbpassword = 'cco' 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 import unittest
from zope import component, interface from zope import component, interface
@ -26,6 +18,11 @@ from loops.organize.tests import setupObjectsForTesting
from loops.storage.compat.common import Storage from loops.storage.compat.common import Storage
from loops import util from loops import util
from scopes.storage.db.postgres import StorageFactory
factory = StorageFactory(config, storageClass=Storage)
storage = factory(schema='testing')
class Glob(object): class Glob(object):
pass pass
@ -44,7 +41,7 @@ class TestCase(unittest.TestCase):
loopsId = util.getUidForObject(loopsRoot) loopsId = util.getUidForObject(loopsRoot)
setupData = setupObjectsForTesting(site, g.concepts) setupData = setupObjectsForTesting(site, g.concepts)
g.johnC = setupData.johnC g.johnC = setupData.johnC
g.storage = Storage(schema='testing') g.storage = storage
@classmethod @classmethod
def cleanup(cls): def cleanup(cls):

View file

@ -9,7 +9,6 @@ import transaction
from zope import component from zope import component
from zope.traversing.api import getName from zope.traversing.api import getName
import config
from loops.concept import Concept from loops.concept import Concept
from loops.config.base import LoopsOptions from loops.config.base import LoopsOptions
from loops.organize.personal.favorite import Favorites as FavoritesAdapter from loops.organize.personal.favorite import Favorites as FavoritesAdapter

14
util.py
View file

@ -22,21 +22,17 @@ try:
except ImportError: except ImportError:
markdown = None markdown = None
import config
import scopes.storage.common
from scopes.storage.common import Storage, getEngine, sessionFactory
import cybertools import cybertools
from cybertools.meta.interfaces import IOptions from cybertools.meta.interfaces import IOptions
from loops.browser.util import html_quote 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') _ = 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 = { renderingFactories = {
'text/plain': 'zope.source.plaintext', 'text/plain': 'zope.source.plaintext',
'text/stx': 'zope.source.stx', 'text/stx': 'zope.source.stx',