use new py-scopes package instead of cco.storage

This commit is contained in:
Helmut Merz 2024-02-15 10:45:58 +01:00
parent 92bc00e134
commit a739aed66a
8 changed files with 23 additions and 24 deletions

View file

@ -59,7 +59,7 @@ class PortletConfigurator(ViewConfigurator):
return getPersonForUser(self.context, self.request) return getPersonForUser(self.context, self.request)
def hasFavorites(self): def hasFavorites(self):
if 'favorites' in (self.view.globalOptions.cco.storage.records or []): if 'favorites' in (self.view.globalOptions.scopes.storage.records or []):
return True return True
if self.records is not None: if self.records is not None:
return 'favorites' in self.records return 'favorites' in self.records

View file

@ -2,7 +2,7 @@
"""SQL-based storage for personal favorites and settings.""" """SQL-based storage for personal favorites and settings."""
from cco.storage.common import registerContainerClass from scopes.storage.common import registerContainerClass
from loops.organize.personal.favorite import BaseFavorite from loops.organize.personal.favorite import BaseFavorite
from loops.storage.compat import tracking from loops.storage.compat import tracking

View file

@ -1,11 +1,11 @@
# loops.storage.compat.common # loops.storage.compat.common
"""Compatibility layer on cco.storage: common functionality.""" """Compatibility layer on scopes.storage: common functionality."""
from sqlalchemy import Table, Column, BigInteger, Text from sqlalchemy import Table, Column, BigInteger, Text
from zope.sqlalchemy import mark_changed from zope.sqlalchemy import mark_changed
from cco.storage import common from scopes.storage import common
class Storage(common.Storage): class Storage(common.Storage):

View file

@ -1,6 +1,6 @@
# loops.storage.compat.tracking # loops.storage.compat.tracking
"""loops compatibility layer on cco.storage.tracking. """loops compatibility layer on scopes.storage.tracking.
Provides a Container subclass that defines methods from cybertools...TrackingStorage Provides a Container subclass that defines methods from cybertools...TrackingStorage
used by code based on loops.organize.tracking. used by code based on loops.organize.tracking.
@ -8,7 +8,7 @@ used by code based on loops.organize.tracking.
from zope.interface import implementer from zope.interface import implementer
from cco.storage import tracking from scopes.storage import tracking
from loops.util import IUid from loops.util import IUid

View file

@ -6,9 +6,9 @@ from datetime import datetime
import transaction import transaction
import config import config
import cco.storage.common import scopes.storage.common
from cco.storage.common import getEngine, sessionFactory from scopes.storage.common import getEngine, sessionFactory
from cco.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.storage.compat.common import Storage
from loops import util from loops import util
@ -26,7 +26,7 @@ def migrate(loopsRoot, source, factory=tracking.Container,
items = [(s.__name__, s) for s in source[start:stop]] items = [(s.__name__, s) for s in source[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('cco.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)

View file

@ -4,8 +4,8 @@
""" """
import config import config
import cco.storage.common import scopes.storage.common
from cco.storage.common import getEngine, sessionFactory from scopes.storage.common import getEngine, sessionFactory
config.dbname = 'ccotest' config.dbname = 'ccotest'
config.dbuser = 'ccotest' config.dbuser = 'ccotest'
@ -13,15 +13,13 @@ config.dbpassword = 'cco'
engine = getEngine(config.dbengine, config.dbname, engine = getEngine(config.dbengine, config.dbname,
config.dbuser, config.dbpassword, config.dbuser, config.dbpassword,
host=config.dbhost, port=config.dbport) host=config.dbhost, port=config.dbport)
cco.storage.common.engine = engine scopes.storage.common.engine = engine
cco.storage.common.Session = sessionFactory(engine) scopes.storage.common.Session = sessionFactory(engine)
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
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

View file

@ -39,8 +39,9 @@ class TestStorage(common.TestCase):
def test_fav_002_migration(self): def test_fav_002_migration(self):
self.assertEqual(config.dbname, 'ccotest') self.assertEqual(config.dbname, 'ccotest')
self.assertEqual(config.dbuser, 'ccotest') self.assertEqual(config.dbuser, 'ccotest')
LoopsOptions(self.loopsRoot).set('cco.storage.schema', ['testing']) LoopsOptions(self.loopsRoot).set('scopes.storage.schema', ['testing'])
self.assertEqual(LoopsOptions(self.loopsRoot)('cco.storage.schema'), ['testing']) self.assertEqual(LoopsOptions(self.loopsRoot)('scopes.storage.schema'),
['testing'])
migrate(self.loopsRoot, 'favorites', factory=Favorites) migrate(self.loopsRoot, 'favorites', factory=Favorites)
self.g.favorites = favorites = self.g.storage.create(Favorites) self.g.favorites = favorites = self.g.storage.create(Favorites)
fav = favorites.get(1) fav = favorites.get(1)

12
util.py
View file

@ -23,8 +23,8 @@ except ImportError:
markdown = None markdown = None
import config import config
import cco.storage.common import scopes.storage.common
from cco.storage.common import Storage, getEngine, sessionFactory 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
@ -34,8 +34,8 @@ _ = MessageFactory('loops')
engine = getEngine(config.dbengine, config.dbname, engine = getEngine(config.dbengine, config.dbname,
config.dbuser, config.dbpassword, config.dbuser, config.dbpassword,
host=config.dbhost, port=config.dbport) host=config.dbhost, port=config.dbport)
cco.storage.common.engine = engine scopes.storage.common.engine = engine
cco.storage.common.Session = sessionFactory(engine) scopes.storage.common.Session = sessionFactory(engine)
renderingFactories = { renderingFactories = {
'text/plain': 'zope.source.plaintext', 'text/plain': 'zope.source.plaintext',
@ -130,8 +130,8 @@ def reindex(obj, catalog=None):
def records(context, name, factory): def records(context, name, factory):
root = context.getLoopsRoot() root = context.getLoopsRoot()
opts = IOptions(root) opts = IOptions(root)
if name in (opts.cco.storage.records or []): if name in (opts.scopes.storage.records or []):
schema = (opts.cco.storage.schema or [None])[0] schema = (opts.scopes.storage.schema or [None])[0]
storage = Storage(schema=schema) storage = Storage(schema=schema)
cont = storage.create(factory) cont = storage.create(factory)
else: else: