From bece8863efc78edcdbb3a6ddc1abd51ce169437b Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 1 Feb 2024 15:21:36 +0100 Subject: [PATCH] use now module-global engine and session factory --- storage/compat/common.py | 5 ++--- storage/migration/tracking.py | 8 +++----- storage/tests/common.py | 13 ++++++------- storage/tests/test_storage.py | 3 ++- util.py | 14 +++++++++----- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/storage/compat/common.py b/storage/compat/common.py index 5cf41a0..879d4df 100644 --- a/storage/compat/common.py +++ b/storage/compat/common.py @@ -12,10 +12,9 @@ class Storage(common.Storage): uidTable = None - def __init__(self, engine, schema=None): - super(Storage, self).__init__(engine, schema) + def __init__(self, schema=None): + super(Storage, self).__init__(schema) self.uidTable = self.getUidTable(self.schema) - self.session = self.Session() def storeUid(self, ouid, nuid): ouid = int(ouid) diff --git a/storage/migration/tracking.py b/storage/migration/tracking.py index 7adb027..6122f87 100644 --- a/storage/migration/tracking.py +++ b/storage/migration/tracking.py @@ -6,7 +6,8 @@ from datetime import datetime import transaction import config -from cco.storage.common import getEngine +import cco.storage.common +from cco.storage.common import getEngine, sessionFactory from cco.storage import tracking from loops.config.base import LoopsOptions from loops.storage.compat.common import Storage @@ -24,10 +25,7 @@ def migrate(loopsRoot, recFolderName, factory=tracking.Container): if schema is not None: schema = schema[0] #print('*** schema:', schema) - storage = Storage(getEngine(config.dbengine, config.dbname, - config.dbuser, config.dbpassword, - host=config.dbhost, port=config.dbport), - schema=schema) + storage = Storage(schema=schema) container = storage.create(factory) for id, inTrack in rf.items(): ts = datetime.fromtimestamp(inTrack.timeStamp) diff --git a/storage/tests/common.py b/storage/tests/common.py index 1184626..bc72701 100644 --- a/storage/tests/common.py +++ b/storage/tests/common.py @@ -4,22 +4,22 @@ """ import config +config.dbname = 'ccotest' +config.dbuser = 'ccotest' +config.dbpassword = 'cco' import unittest from zope import component, interface from zope.app.testing.setup import placefulSetUp, placefulTearDown -from cco.storage.common import getEngine +import cco.storage.common +from cco.storage.common import getEngine, sessionFactory from loops.expert.testsetup import TestSite from loops.organize.personal.setup import SetupManager from loops.organize.tests import setupObjectsForTesting from loops.storage.compat.common import Storage from loops import util -config.dbname = 'ccotest' -config.dbuser = 'ccotest' -config.dbpassword = 'cco' - class Glob(object): pass @@ -38,8 +38,7 @@ class TestCase(unittest.TestCase): loopsId = util.getUidForObject(loopsRoot) setupData = setupObjectsForTesting(site, g.concepts) g.johnC = setupData.johnC - g.storage = Storage(getEngine('postgresql', 'ccotest', 'ccotest', 'cco'), - schema='testing') + g.storage = Storage(schema='testing') @classmethod def cleanup(cls): diff --git a/storage/tests/test_storage.py b/storage/tests/test_storage.py index ccb5a0a..e72caab 100644 --- a/storage/tests/test_storage.py +++ b/storage/tests/test_storage.py @@ -7,6 +7,8 @@ import transaction from zope import component from zope.traversing.api import getName +from loops.storage.tests import common + import config from loops.concept import Concept from loops.config.base import LoopsOptions @@ -15,7 +17,6 @@ from loops.organize.personal.interfaces import IFavorites from loops.organize.personal.storage.favorite import Favorites from loops.storage.migration.tracking import migrate from loops.setup import addAndConfigureObject -from loops.storage.tests import common from loops import util diff --git a/util.py b/util.py index 9797ee6..fb87bec 100644 --- a/util.py +++ b/util.py @@ -23,13 +23,20 @@ except ImportError: markdown = None import config -from cco.storage.common import Storage, getEngine +import cco.storage.common +from cco.storage.common import Storage, getEngine, sessionFactory import cybertools from cybertools.meta.interfaces import IOptions from loops.browser.util import html_quote _ = MessageFactory('loops') +engine = getEngine(config.dbengine, config.dbname, + config.dbuser, config.dbpassword, + host=config.dbhost, port=config.dbport) +cco.storage.common.engine = engine +cco.storage.common.Session = sessionFactory(engine) + renderingFactories = { 'text/plain': 'zope.source.plaintext', @@ -126,10 +133,7 @@ def records(context, name, factory): opts = IOptions(root) if name in (opts.cco.storage.records or []): schema = (opts.cco.storage.schema or [None])[0] - storage = Storage(getEngine(config.dbengine, config.dbname, - config.dbuser, config.dbpassword, - host=config.dbhost, port=config.dbport), - schema=schema) + storage = Storage( schema=schema) cont = storage.create(factory) else: cont = root.getRecordManager().get(name)