From 1280f8b15ab47cc73b2233dc46897bb5d27ff8aa Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Mon, 26 Feb 2024 09:22:27 +0100 Subject: [PATCH] work in progress: storage.folder implementation --- demo/demo_server.py | 3 ++- scopes/storage/folder.py | 28 ++++++++++++++++++++++++++++ tests/test_storage.py | 5 ++++- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 scopes/storage/folder.py diff --git a/demo/demo_server.py b/demo/demo_server.py index 219d9bb..b585fac 100644 --- a/demo/demo_server.py +++ b/demo/demo_server.py @@ -15,4 +15,5 @@ def run(app, config): if __name__ == '__main__': import config run(config.app, config) - + #run(config.app_factory(), config) + # see zope.app.wsgi.getWSGIApplication diff --git a/scopes/storage/folder.py b/scopes/storage/folder.py new file mode 100644 index 0000000..a2c85d6 --- /dev/null +++ b/scopes/storage/folder.py @@ -0,0 +1,28 @@ +# scopes.storage.folder + +from scopes.storage.common import registerContainerClass +from scopes.storage.tracking import Container, Track + + +class Folder(Track): + + headFields = ['parent', 'name'] + prefix = 'fldr' + + def keys(self): + return [] + + def get(self, key, default=None): + return default + + def __getitem__(self, key): + raise KeyError + + +@registerContainerClass +class Folders(Container): + + itemFactory = Folder + indexes = [('parent', 'name')] + tableName = 'folders' + insertOnChange = False diff --git a/tests/test_storage.py b/tests/test_storage.py index aff5d0d..9180e3b 100644 --- a/tests/test_storage.py +++ b/tests/test_storage.py @@ -9,7 +9,7 @@ import unittest import scopes.storage.common from scopes.storage.common import Storage, getEngine, sessionFactory from scopes.storage import proxy -from scopes.storage import tracking +from scopes.storage import folder, tracking import config engine = getEngine(config.dbengine, config.dbname, config.dbuser, config.dbpassword) @@ -70,6 +70,9 @@ class Test(unittest.TestCase): transaction.commit() + def testFolder(self): + storage.dropTable('folders') + folders = storage.create(folder.Folders) def suite(): return unittest.TestSuite((