From 7b9861600812d06714d63d14839fc8e2ad69c01d Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 13 Mar 2024 14:00:44 +0100 Subject: [PATCH] minor improvements; handle NotFound more gracefully --- scopes/server/app.py | 10 ++++++++-- scopes/server/browser.py | 1 - scopes/storage/folder.py | 3 +-- tests/tlib_server.py | 2 +- tests/tlib_storage.py | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/scopes/server/app.py b/scopes/server/app.py index 8127265..d9bc634 100644 --- a/scopes/server/app.py +++ b/scopes/server/app.py @@ -14,10 +14,10 @@ def zope_app_factory(config): storageFactory = config.StorageFactory(config) def zope_app(environ, start_response): storage = storageFactory(config.dbschema) - appRoot = Root(storage, config) + appRoot = Root(storage) request = BrowserRequest(environ['wsgi.input'], environ) request.setPublication(Publication(appRoot)) - request = publish(request, False) + request = publish(request, True) response = request.response start_response(response.getStatusString(), response.getHeaders()) return response.consumeBodyIter() @@ -41,3 +41,9 @@ class Publication(DefaultPublication): return ob, () return ob, ('index.html',) + def handleException(self, ob, request, exc_info, retry_allowed=True): + if exc_info[0] != NotFound: + raise + request.response.reset() + request.response.handleException(exc_info) + diff --git a/scopes/server/browser.py b/scopes/server/browser.py index 3b44da4..8f81074 100644 --- a/scopes/server/browser.py +++ b/scopes/server/browser.py @@ -40,6 +40,5 @@ class DefaultView: result = dict(head=ob.head, data=ob.data) if IContainer.providedBy(ob): result['items'] = list(ob.keys()) - print('***', result) return json.dumps(result) diff --git a/scopes/storage/folder.py b/scopes/storage/folder.py index c459ae8..049d21d 100644 --- a/scopes/storage/folder.py +++ b/scopes/storage/folder.py @@ -45,8 +45,7 @@ class Root(Folder): """A dummy (virtual) root folder for creating real folders using the Folder API.""" - def __init__(self, storage, config=None): - self.config = config + def __init__(self, storage): cont = storage.create(Folders) super(Root, self).__init__(container=cont) diff --git a/tests/tlib_server.py b/tests/tlib_server.py index aaff8c0..6506518 100644 --- a/tests/tlib_server.py +++ b/tests/tlib_server.py @@ -11,7 +11,7 @@ from scopes.storage.folder import Root def publishRequest(config, storage, path): - appRoot = Root(storage, config) + appRoot = Root(storage) request = TestRequest(environ=dict(PATH_INFO=path)) request.setPublication(Publication(appRoot)) request = publish(request, False) diff --git a/tests/tlib_storage.py b/tests/tlib_storage.py index 57c5ff3..630d73c 100644 --- a/tests/tlib_storage.py +++ b/tests/tlib_storage.py @@ -60,7 +60,7 @@ def test_tracking(self, config): def test_folder(self, config): storage = config.storageFactory(config.dbschema) storage.dropTable('folders') - root = folder.Root(storage, config) + root = folder.Root(storage) self.assertEqual(list(root.keys()), []) root['top'] = folder.Folder() self.assertEqual(list(root.keys()), ['top'])