minor improvements; handle NotFound more gracefully

This commit is contained in:
Helmut Merz 2024-03-13 14:00:44 +01:00
parent a16c1dd469
commit 7b98616008
5 changed files with 11 additions and 7 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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'])