diff --git a/src/zope/browserpage/metaconfigure.py b/src/zope/browserpage/metaconfigure.py index fe529fe..58bed73 100644 --- a/src/zope/browserpage/metaconfigure.py +++ b/src/zope/browserpage/metaconfigure.py @@ -404,6 +404,8 @@ def _handle_for(_context, for_): @implementer(IBrowserPublisher) class simple(BrowserView): + __page_attribute__ = '__call__' + def publishTraverse(self, request, name): if name in getattr(self, "_simple__whitelist", []): self.__page_attribute__ = name diff --git a/src/zope/browserpage/tests/test_page.py b/src/zope/browserpage/tests/test_page.py index 206e5fd..5256270 100644 --- a/src/zope/browserpage/tests/test_page.py +++ b/src/zope/browserpage/tests/test_page.py @@ -560,11 +560,11 @@ def testNamedViewNoPagesForNonCallable(self): view = component.getMultiAdapter((ob, self.request), name='test') view = removeSecurityProxy(view) + browser_default = view.browserDefault(self.request) + self.assertEqual(browser_default[1], '') with self.assertRaises(AttributeError) as ctx: - view.browserDefault(self.request) - self.assertEqual( - str(ctx.exception), - "'test' object has no attribute '__page_attribute__'") + browser_default[0]() + self.assertEqual(str(ctx.exception), "__call__") def testNamedViewPageViewsNoDefault(self): self.assertEqual(