use now module-global engine and session factory

This commit is contained in:
Helmut Merz 2024-02-01 15:21:36 +01:00
parent 16a8bcf5c3
commit bece8863ef
5 changed files with 22 additions and 21 deletions

View file

@ -12,10 +12,9 @@ class Storage(common.Storage):
uidTable = None uidTable = None
def __init__(self, engine, schema=None): def __init__(self, schema=None):
super(Storage, self).__init__(engine, schema) super(Storage, self).__init__(schema)
self.uidTable = self.getUidTable(self.schema) self.uidTable = self.getUidTable(self.schema)
self.session = self.Session()
def storeUid(self, ouid, nuid): def storeUid(self, ouid, nuid):
ouid = int(ouid) ouid = int(ouid)

View file

@ -6,7 +6,8 @@ from datetime import datetime
import transaction import transaction
import config 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 cco.storage import tracking
from loops.config.base import LoopsOptions from loops.config.base import LoopsOptions
from loops.storage.compat.common import Storage from loops.storage.compat.common import Storage
@ -24,10 +25,7 @@ def migrate(loopsRoot, recFolderName, factory=tracking.Container):
if schema is not None: if schema is not None:
schema = schema[0] schema = schema[0]
#print('*** schema:', schema) #print('*** schema:', schema)
storage = Storage(getEngine(config.dbengine, config.dbname, storage = Storage(schema=schema)
config.dbuser, config.dbpassword,
host=config.dbhost, port=config.dbport),
schema=schema)
container = storage.create(factory) container = storage.create(factory)
for id, inTrack in rf.items(): for id, inTrack in rf.items():
ts = datetime.fromtimestamp(inTrack.timeStamp) ts = datetime.fromtimestamp(inTrack.timeStamp)

View file

@ -4,22 +4,22 @@
""" """
import config import config
config.dbname = 'ccotest'
config.dbuser = 'ccotest'
config.dbpassword = 'cco'
import unittest import unittest
from zope import component, interface from zope import component, interface
from zope.app.testing.setup import placefulSetUp, placefulTearDown 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.expert.testsetup import TestSite
from loops.organize.personal.setup import SetupManager from loops.organize.personal.setup import SetupManager
from loops.organize.tests import setupObjectsForTesting 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
config.dbname = 'ccotest'
config.dbuser = 'ccotest'
config.dbpassword = 'cco'
class Glob(object): class Glob(object):
pass pass
@ -38,8 +38,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(getEngine('postgresql', 'ccotest', 'ccotest', 'cco'), g.storage = Storage(schema='testing')
schema='testing')
@classmethod @classmethod
def cleanup(cls): def cleanup(cls):

View file

@ -7,6 +7,8 @@ import transaction
from zope import component from zope import component
from zope.traversing.api import getName from zope.traversing.api import getName
from loops.storage.tests import common
import config import config
from loops.concept import Concept from loops.concept import Concept
from loops.config.base import LoopsOptions 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.organize.personal.storage.favorite import Favorites
from loops.storage.migration.tracking import migrate from loops.storage.migration.tracking import migrate
from loops.setup import addAndConfigureObject from loops.setup import addAndConfigureObject
from loops.storage.tests import common
from loops import util from loops import util

14
util.py
View file

@ -23,13 +23,20 @@ except ImportError:
markdown = None markdown = None
import config import config
from cco.storage.common import Storage, getEngine import cco.storage.common
from cco.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
_ = MessageFactory('loops') _ = 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 = { renderingFactories = {
'text/plain': 'zope.source.plaintext', 'text/plain': 'zope.source.plaintext',
@ -126,10 +133,7 @@ def records(context, name, factory):
opts = IOptions(root) opts = IOptions(root)
if name in (opts.cco.storage.records or []): if name in (opts.cco.storage.records or []):
schema = (opts.cco.storage.schema or [None])[0] schema = (opts.cco.storage.schema or [None])[0]
storage = Storage(getEngine(config.dbengine, config.dbname, storage = Storage( schema=schema)
config.dbuser, config.dbpassword,
host=config.dbhost, port=config.dbport),
schema=schema)
cont = storage.create(factory) cont = storage.create(factory)
else: else:
cont = root.getRecordManager().get(name) cont = root.getRecordManager().get(name)