[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