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)
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
if self.records is not None:
return 'favorites' in self.records

View file

@ -2,7 +2,7 @@
"""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.storage.compat import tracking

View file

@ -1,11 +1,11 @@
# 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 zope.sqlalchemy import mark_changed
from cco.storage import common
from scopes.storage import common
class Storage(common.Storage):

View file

@ -1,6 +1,6 @@
# 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
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 cco.storage import tracking
from scopes.storage import tracking
from loops.util import IUid

View file

@ -6,9 +6,9 @@ from datetime import datetime
import transaction
import config
import cco.storage.common
from cco.storage.common import getEngine, sessionFactory
from cco.storage import tracking
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
@ -26,7 +26,7 @@ def migrate(loopsRoot, source, factory=tracking.Container,
items = [(s.__name__, s) for s in source[start:stop]]
options = LoopsOptions(loopsRoot)
#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:
schema = schema[0]
#print('*** schema:', schema)

View file

@ -4,8 +4,8 @@
"""
import config
import cco.storage.common
from cco.storage.common import getEngine, sessionFactory
import scopes.storage.common
from scopes.storage.common import getEngine, sessionFactory
config.dbname = 'ccotest'
config.dbuser = 'ccotest'
@ -13,15 +13,13 @@ config.dbpassword = 'cco'
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)
scopes.storage.common.engine = engine
scopes.storage.common.Session = sessionFactory(engine)
import unittest
from zope import component, interface
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.organize.personal.setup import SetupManager
from loops.organize.tests import setupObjectsForTesting

View file

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

12
util.py
View file

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