[Checkins] SVN: zope.browserzcml2/trunk/src/zope/browserzcml2/
require IPage, not IBrowserPublisher from page factories.
Philipp von Weitershausen
philikon at philikon.de
Fri Apr 21 15:20:50 EDT 2006
Log message for revision 67253:
require IPage, not IBrowserPublisher from page factories.
Changed:
U zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt
U zope.browserzcml2/trunk/src/zope/browserzcml2/zcml.py
-=-
Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt 2006-04-21 19:00:51 UTC (rev 67252)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/README.txt 2006-04-21 19:20:50 UTC (rev 67253)
@@ -24,15 +24,18 @@
Publishable means that it is basically the last piece in the traversal
chain and the object that is responsible for the request. It will be
published. Hence, it has to be publishable. Publishability is
-determined by the ``IBrowerPublisher`` interface. All pages should
-provide it.
+determined by the ``IBrowerPublisher`` interface, all browser views
+that want to be published should provide it.
+For browser pages in this context we actually require the ``IPage``
+interface which extends ``IBrowserPublisher`` in one aspect: a
+``__call__`` method.
+
Simple page
~~~~~~~~~~~
Let's create a simple page. For convenience, we can inherit from
-``zope.formlib.Page`` which will give us ``IBrowserPublisher``
-conformance:
+``zope.formlib.Page`` which will give us ``IPage`` conformance:
>>> import zope.formlib
>>> class MacGyverPage(zope.formlib.Page):
@@ -91,15 +94,14 @@
...
ZopeXMLConfigurationError: File "<string>", line 7.0-12.6
ConfigurationError: The browser page factory needs to provide
- IBrowserPublisher. A convenient base class is zope.formlib.Page.
+ IPage. A convenient base class is zope.formlib.Page.
It is, however, absolutely possible that the supplied factory isn't in
-fact a class. As long as it implements ``IBrowserPublisher``, it's
-ok:
+fact a class. As long as it implements ``IPage``, it's ok:
>>> import zope.interface
- >>> from zope.publisher.interfaces.browser import IBrowserPublisher
- >>> @zope.interface.implementer(IBrowserPublisher)
+ >>> from zope.formlib.interfaces import IPage
+ >>> @zope.interface.implementer(IPage)
... def makeAMacGyverPage(context, request):
... return MacGyverPage(context, request)
Modified: zope.browserzcml2/trunk/src/zope/browserzcml2/zcml.py
===================================================================
--- zope.browserzcml2/trunk/src/zope/browserzcml2/zcml.py 2006-04-21 19:00:51 UTC (rev 67252)
+++ zope.browserzcml2/trunk/src/zope/browserzcml2/zcml.py 2006-04-21 19:20:50 UTC (rev 67253)
@@ -18,14 +18,13 @@
__docformat__ = "reStructuredText"
import zope.interface
-import zope.formlib
+import zope.formlib.interfaces
import zope.configuration.fields
import zope.configuration.exceptions
import zope.i18nmessageid
_ = zope.i18nmessageid.MessageFactory('zope')
from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.publisher.interfaces.browser import IBrowserPublisher
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
from zope.browserzcml2.interfaces import IViewCharacteristics
from zope.browserzcml2.interfaces import IRegisterInMenu
@@ -41,7 +40,7 @@
factory = zope.configuration.fields.GlobalObject(
title=_(u"Factory"),
description=_(u"Adapter factory that returns the browser page. "
- "It should implement IBrowserPublisher."),
+ "It should implement IPage."),
required=True,
)
@@ -49,15 +48,15 @@
_context, factory, # IPageDirective
for_, name, permission, layer=IDefaultBrowserLayer, # IViewCharacteristics
menu=None, title=None): # IRegisterInMenu
- if not IBrowserPublisher.implementedBy(factory):
+ if not zope.formlib.interfaces.IPage.implementedBy(factory):
raise zope.configuration.exceptions.ConfigurationError(
- "The browser page factory needs to provide IBrowserPublisher. "
+ "The browser page factory needs to provide IPage. "
"A convenient base class is zope.formlib.Page."
)
adapter(_context,
factory=(factory,),
for_=(for_, layer),
- provides=IBrowserPublisher,
+ provides=zope.formlib.interfaces.IPage,
permission=permission,
name=name)
More information about the Checkins
mailing list