[Checkins] SVN: Sandbox/nadako/zope. Move browser:defaultView and browser:defaultSkin directives from zope.app.publisher to zope.publisher.

Dan Korostelev nadako at gmail.com
Tue Aug 25 09:12:10 EDT 2009


Log message for revision 103204:
  Move browser:defaultView and browser:defaultSkin directives from zope.app.publisher to zope.publisher.

Changed:
  U   Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/meta.zcml
  U   Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metaconfigure.py
  U   Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metadirectives.py
  D   Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/tests.py
  U   Sandbox/nadako/zope.publisher/src/zope/publisher/defaultview.py
  A   Sandbox/nadako/zope.publisher/src/zope/publisher/meta.zcml
  A   Sandbox/nadako/zope.publisher/src/zope/publisher/tests/test_zcml.py
  A   Sandbox/nadako/zope.publisher/src/zope/publisher/zcml.py

-=-
Modified: Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/meta.zcml
===================================================================
--- Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/meta.zcml	2009-08-25 12:29:59 UTC (rev 103203)
+++ Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/meta.zcml	2009-08-25 13:12:10 UTC (rev 103204)
@@ -1,26 +1,8 @@
-<configure
-    xmlns="http://namespaces.zope.org/zope"
-    xmlns:meta="http://namespaces.zope.org/meta"
-    xmlns:zcml="http://namespaces.zope.org/zcml">
+<configure xmlns="http://namespaces.zope.org/zope">
 
+  <include package="zope.publisher" file="meta.zcml" />
   <include package="zope.browserresource" file="meta.zcml" />
   <include package="zope.browsermenu" file="meta.zcml" />
   <include package="zope.browserpage" file="meta.zcml" />
 
-  <meta:directives namespace="http://namespaces.zope.org/browser">
-
-    <meta:directive
-        name="defaultView"
-        schema=".metadirectives.IDefaultViewDirective"
-        handler=".metaconfigure.defaultView"
-        />
-
-    <meta:directive
-        name="defaultSkin"
-        schema=".metadirectives.IDefaultSkinDirective"
-        handler=".metaconfigure.defaultSkin"
-        />
-
-  </meta:directives>
-
 </configure>

Modified: Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metaconfigure.py
===================================================================
--- Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metaconfigure.py	2009-08-25 12:29:59 UTC (rev 103203)
+++ Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metaconfigure.py	2009-08-25 13:12:10 UTC (rev 103204)
@@ -15,66 +15,9 @@
 
 $Id$
 """
-__docformat__ = 'restructuredtext'
-
-import warnings
-from zope import component
-from zope.component.interface import provideInterface
-from zope.component.zcml import handler
-from zope.publisher.interfaces import IDefaultViewName
-from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.publisher.interfaces.browser import IBrowserSkinType
-from zope.publisher.interfaces.browser import IDefaultSkin
-
-# referred to through ZCML
-from zope.app.publisher.browser.resourcemeta import resource
-from zope.app.publisher.browser.resourcemeta import resourceDirectory
-from zope.app.publisher.browser.i18nresourcemeta import I18nResource
+# BBB imports
+from zope.browserresource.metaconfigure import resource
+from zope.browserresource.metaconfigure import resourceDirectory
+from zope.browserresource.metaconfigure import I18nResource
 from zope.browserpage.metaconfigure import view
-
-
-def setDefaultSkin(name, info=''):
-    """Set the default skin.
-
-    >>> from zope.interface import directlyProvides
-    >>> from zope.app.testing import ztapi
-
-    >>> class Skin1: pass
-    >>> directlyProvides(Skin1, IBrowserSkinType)
-
-    >>> ztapi.provideUtility(IBrowserSkinType, Skin1, 'Skin1')
-    >>> setDefaultSkin('Skin1')
-    >>> adapters = component.getSiteManager().adapters
-
-	Lookup the default skin for a request that has the
-
-    >>> adapters.lookup((IBrowserRequest,), IDefaultSkin, '') is Skin1
-    True
-    """
-    skin = component.getUtility(IBrowserSkinType, name)
-    handler('registerAdapter',
-            skin, (IBrowserRequest,), IDefaultSkin, '', info),
-
-def defaultSkin(_context, name):
-
-    _context.action(
-        discriminator = 'defaultSkin',
-        callable = setDefaultSkin,
-        args = (name, _context.info)
-        )
-
-def defaultView(_context, name, for_=None, layer=IBrowserRequest):
-
-    _context.action(
-        discriminator = ('defaultViewName', for_, layer, name),
-        callable = handler,
-        args = ('registerAdapter',
-                name, (for_, layer), IDefaultViewName, '', _context.info)
-        )
-
-    if for_ is not None:
-        _context.action(
-            discriminator = None,
-            callable = provideInterface,
-            args = ('', for_)
-            )
+from zope.publisher.zcml import setDefaultSkin, defaultSkin, defaultView

Modified: Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metadirectives.py
===================================================================
--- Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metadirectives.py	2009-08-25 12:29:59 UTC (rev 103203)
+++ Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/metadirectives.py	2009-08-25 13:12:10 UTC (rev 103204)
@@ -17,10 +17,6 @@
 
 $Id$
 """
-from zope.configuration.fields import GlobalObject, GlobalInterface
-from zope.interface import Interface
-from zope.schema import TextLine
-
 # BBB imports
 from zope.browserresource.metadirectives import (
     IBasicResourceInformation,
@@ -48,47 +44,4 @@
     IPagesPageSubdirective,
     IPageDirective,
 )
-
-
-class IDefaultSkinDirective(Interface):
-    """Sets the default browser skin
-    """
-
-    name = TextLine(
-        title=u"Default skin name",
-        description=u"Default skin name",
-        required=True
-        )
-
-class IDefaultViewDirective(Interface):
-    """
-    The name of the view that should be the default.
-
-    This name refers to view that should be the
-    view used by default (if no view name is supplied
-    explicitly).
-    """
-
-    name = TextLine(
-        title=u"The name of the view that should be the default.",
-        description=u"""
-        This name refers to view that should be the view used by
-        default (if no view name is supplied explicitly).""",
-        required=True
-        )
-
-    for_ = GlobalObject(
-        title=u"The interface this view is the default for.",
-        description=u"""Specifies the interface for which the view is
-        registered. All objects implementing this interface can make use of
-        this view. If this attribute is not specified, the view is available
-        for all objects.""",
-        required=False
-        )
-
-    layer = GlobalInterface(
-        title=u"The layer the default view is declared for",
-        description=u"The default layer for which the default view is "
-                    u"applicable. By default it is applied to all layers.",
-        required=False
-        )
+from zope.publisher.zcml import IDefaultSkinDirective, IDefaultViewDirective

Deleted: Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/tests.py
===================================================================
--- Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/tests.py	2009-08-25 12:29:59 UTC (rev 103203)
+++ Sandbox/nadako/zope.app.publisher/src/zope/app/publisher/browser/tests.py	2009-08-25 13:12:10 UTC (rev 103204)
@@ -1,238 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""'browser' namespace directive tests
-
-$Id$
-"""
-
-import sys
-import os
-import unittest
-from cStringIO import StringIO
-
-from zope import component
-from zope.interface import Interface, implements, directlyProvides, providedBy
-
-import zope.security.management
-from zope.configuration.xmlconfig import xmlconfig, XMLConfig
-from zope.configuration.exceptions import ConfigurationError
-from zope.publisher.browser import TestRequest
-from zope.publisher.interfaces import IDefaultViewName
-from zope.publisher.interfaces.browser import IBrowserPublisher
-from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.publisher.interfaces.browser import IBrowserSkinType, IDefaultSkin
-from zope.security.proxy import removeSecurityProxy, ProxyFactory
-from zope.security.permission import Permission
-from zope.security.interfaces import IPermission
-from zope.testing.doctestunit import DocTestSuite
-from zope.traversing.adapters import DefaultTraversable
-from zope.traversing.interfaces import ITraversable
-
-import zope.publisher.defaultview
-import zope.app.publisher.browser
-from zope.component.testfiles.views import IC, V1, VZMI, R1, IV
-from zope.app.publisher.browser.fileresource import FileResource
-from zope.app.publisher.browser.i18nfileresource import I18nFileResource
-from zope.browsermenu.menu import getFirstMenuItem
-from zope.browsermenu.interfaces import IMenuItemType, IBrowserMenu
-from zope.app.testing import placelesssetup, ztapi
-
-tests_path = os.path.join(
-    os.path.dirname(zope.app.publisher.browser.__file__),
-    'tests')
-
-template = """<configure
-   xmlns='http://namespaces.zope.org/zope'
-   xmlns:browser='http://namespaces.zope.org/browser'
-   i18n_domain='zope'>
-   %s
-   </configure>"""
-
-
-request = TestRequest()
-
-class V2(V1, object):
-
-    def action(self):
-        return self.action2()
-
-    def action2(self):
-        return "done"
-
-class VT(V1, object):
-    def publishTraverse(self, request, name):
-        try:
-            return int(name)
-        except:
-            return super(VT, self).publishTraverse(request, name)
-
-class Ob(object):
-    implements(IC)
-
-ob = Ob()
-
-class NCV(object):
-    "non callable view"
-
-    def __init__(self, context, request):
-        pass
-
-class CV(NCV):
-    "callable view"
-    def __call__(self):
-        pass
-
-
-class C_w_implements(NCV):
-    implements(Interface)
-
-    def index(self):
-        return self
-
-class ITestMenu(Interface):
-    """Test menu."""
-
-directlyProvides(ITestMenu, IMenuItemType)
-
-
-class ITestLayer(IBrowserRequest):
-    """Test Layer."""
-
-class ITestSkin(ITestLayer):
-    """Test Skin."""
-
-
-class MyResource(object):
-
-    def __init__(self, request):
-        self.request = request
-
-
-class Test(placelesssetup.PlacelessSetup, unittest.TestCase):
-
-    def setUp(self):
-        super(Test, self).setUp()
-        XMLConfig('meta.zcml', zope.app.publisher.browser)()
-        ztapi.provideAdapter(None, ITraversable, DefaultTraversable)
-
-    def testDefaultView(self):
-        self.assertEqual(
-            component.queryMultiAdapter((ob, request), IDefaultViewName),
-            None)
-
-        xmlconfig(StringIO(template % (
-            '''
-            <browser:defaultView
-                name="test"
-                for="zope.component.testfiles.views.IC" />
-            '''
-            )))
-
-        self.assertEqual(
-            zope.publisher.defaultview.getDefaultViewName(ob, request),
-            'test')
-
-    def testDefaultViewWithLayer(self):
-        class FakeRequest(TestRequest):
-            implements(ITestLayer)
-        request2 = FakeRequest()
-
-        self.assertEqual(
-            component.queryMultiAdapter((ob, request2), IDefaultViewName),
-            None)
-
-        xmlconfig(StringIO(template % (
-            '''
-            <browser:defaultView
-                name="test"
-                for="zope.component.testfiles.views.IC" />
-
-            <browser:defaultView
-                name="test2"
-                for="zope.component.testfiles.views.IC"
-                layer="
-                  zope.app.publisher.browser.tests.ITestLayer"
-                />
-            '''
-            )))
-
-        self.assertEqual(
-            zope.publisher.defaultview.getDefaultViewName(ob, request2),
-            'test2')
-        self.assertEqual(
-            zope.publisher.defaultview.getDefaultViewName(ob, request),
-            'test')
-
-    def testDefaultViewForClass(self):
-        self.assertEqual(
-            component.queryMultiAdapter((ob, request), IDefaultViewName),
-            None)
-
-        xmlconfig(StringIO(template % (
-            '''
-            <browser:defaultView
-                for="zope.app.publisher.browser.tests.Ob"
-                name="test"
-                />
-            '''
-            )))
-
-        self.assertEqual(
-            zope.publisher.defaultview.getDefaultViewName(ob, request),
-            'test')
-
-    def testDefaultSkin(self):
-        request = TestRequest()
-        self.assertEqual(
-            component.queryMultiAdapter((ob, request), name='test'),
-            None)
-
-        XMLConfig('meta.zcml', zope.component)()
-        xmlconfig(StringIO(template % (
-            '''
-            <interface
-                interface="
-                  zope.app.publisher.browser.tests.ITestSkin"
-                type="zope.publisher.interfaces.browser.IBrowserSkinType"
-                name="Test Skin"
-                />
-            <browser:defaultSkin name="Test Skin" />
-            <browser:page
-                name="test"
-                class="zope.component.testfiles.views.VZMI"
-                layer="
-                  zope.app.publisher.browser.tests.ITestLayer"
-                for="zope.component.testfiles.views.IC"
-                permission="zope.Public"
-                attribute="index"
-                />
-            <browser:page name="test"
-                class="zope.component.testfiles.views.V1"
-                for="zope.component.testfiles.views.IC"
-                permission="zope.Public"
-                attribute="index"
-                />
-            '''
-            )))
-
-        # Simulate Zope Publication behavior in beforeTraversal()
-        adapters = component.getSiteManager().adapters
-        skin = adapters.lookup((providedBy(request),), IDefaultSkin, '')
-        directlyProvides(request, skin)
-
-        v = component.queryMultiAdapter((ob, request), name='test')
-        self.assert_(issubclass(v.__class__, VZMI))
-
-def test_suite():
-    return unittest.makeSuite(Test)

Modified: Sandbox/nadako/zope.publisher/src/zope/publisher/defaultview.py
===================================================================
--- Sandbox/nadako/zope.publisher/src/zope/publisher/defaultview.py	2009-08-25 12:29:59 UTC (rev 103203)
+++ Sandbox/nadako/zope.publisher/src/zope/publisher/defaultview.py	2009-08-25 13:12:10 UTC (rev 103204)
@@ -43,7 +43,6 @@
         a context.
         """
 
-# TODO: needs tests
 def getDefaultViewName(object, request, context=None):
     name = queryDefaultViewName(object, request, context=context)
     if name is not None:

Added: Sandbox/nadako/zope.publisher/src/zope/publisher/meta.zcml
===================================================================
--- Sandbox/nadako/zope.publisher/src/zope/publisher/meta.zcml	                        (rev 0)
+++ Sandbox/nadako/zope.publisher/src/zope/publisher/meta.zcml	2009-08-25 13:12:10 UTC (rev 103204)
@@ -0,0 +1,19 @@
+<configure xmlns:meta="http://namespaces.zope.org/meta">
+
+  <meta:directives namespace="http://namespaces.zope.org/browser">
+
+    <meta:directive
+        name="defaultView"
+        schema=".zcml.IDefaultViewDirective"
+        handler=".zcml.defaultView"
+        />
+
+    <meta:directive
+        name="defaultSkin"
+        schema=".zcml.IDefaultSkinDirective"
+        handler=".zcml.defaultSkin"
+        />
+
+  </meta:directives>
+
+</configure>


Property changes on: Sandbox/nadako/zope.publisher/src/zope/publisher/meta.zcml
___________________________________________________________________
Added: svn:eol-style
   + native

Added: Sandbox/nadako/zope.publisher/src/zope/publisher/tests/test_zcml.py
===================================================================
--- Sandbox/nadako/zope.publisher/src/zope/publisher/tests/test_zcml.py	                        (rev 0)
+++ Sandbox/nadako/zope.publisher/src/zope/publisher/tests/test_zcml.py	2009-08-25 13:12:10 UTC (rev 103204)
@@ -0,0 +1,169 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Tests for browser:defaultSkin and browser:defaultView directives
+
+$Id: tests.py 103163 2009-08-24 16:22:07Z nadako $
+"""
+from cStringIO import StringIO
+import unittest
+
+from zope.testing import cleanup
+from zope import component
+
+from zope.configuration.xmlconfig import XMLConfig, xmlconfig
+from zope.publisher.browser import TestRequest, BrowserView
+from zope.publisher.defaultview import getDefaultViewName
+from zope.publisher.interfaces import IDefaultViewName, IDefaultSkin
+from zope.publisher.interfaces.browser import IBrowserRequest
+from zope.interface import Interface, implements, providedBy, directlyProvides
+
+import zope.publisher
+
+class IOb(Interface):
+    pass
+
+class Ob(object):
+    implements(IOb)
+
+class ITestLayer(IBrowserRequest):
+    """Test Layer."""
+
+class ITestSkin(ITestLayer):
+    """Test Skin."""
+
+class V1(BrowserView):
+    pass
+
+class V2(BrowserView):
+    pass
+
+
+request = TestRequest()
+ob = Ob()
+
+template = """<configure
+   xmlns='http://namespaces.zope.org/zope'
+   xmlns:browser='http://namespaces.zope.org/browser'
+   i18n_domain='zope'>
+   %s
+   </configure>"""
+
+class Test(cleanup.CleanUp, unittest.TestCase):
+
+    def setUp(self):
+        super(Test, self).setUp()
+        XMLConfig('meta.zcml', zope.publisher)()
+
+    def testDefaultView(self):
+        self.assertTrue(
+            component.queryMultiAdapter((ob, request), IDefaultViewName) is None)
+        xmlconfig(StringIO(template % (
+            '''
+            <browser:defaultView
+                name="test"
+                for="zope.publisher.tests.test_zcml.IOb" />
+            '''
+            )))
+
+        self.assertEqual(getDefaultViewName(ob, request), 'test')
+
+    def testDefaultViewWithLayer(self):
+        class FakeRequest(TestRequest):
+            implements(ITestLayer)
+        request2 = FakeRequest()
+
+        self.assertEqual(
+            component.queryMultiAdapter((ob, request2), IDefaultViewName),
+            None)
+
+        xmlconfig(StringIO(template % (
+            '''
+            <browser:defaultView
+                for="zope.publisher.tests.test_zcml.IOb"
+                name="test"
+                />
+            <browser:defaultView
+                for="zope.publisher.tests.test_zcml.IOb"
+                layer="zope.publisher.tests.test_zcml.ITestLayer"
+                name="test2"
+                />
+            '''
+            )))
+
+        self.assertEqual(
+            zope.publisher.defaultview.getDefaultViewName(ob, request2),
+            'test2')
+        self.assertEqual(
+            zope.publisher.defaultview.getDefaultViewName(ob, request),
+            'test')
+
+    def testDefaultViewForClass(self):
+        self.assertEqual(
+            component.queryMultiAdapter((ob, request), IDefaultViewName),
+            None)
+
+        xmlconfig(StringIO(template % (
+            '''
+            <browser:defaultView
+                for="zope.publisher.tests.test_zcml.Ob"
+                name="test"
+                />
+            '''
+            )))
+
+        self.assertEqual(
+            zope.publisher.defaultview.getDefaultViewName(ob, request),
+            'test')
+
+    def testDefaultSkin(self):
+        request = TestRequest()
+        self.assertEqual(
+            component.queryMultiAdapter((ob, request), name='test'),
+            None)
+
+        XMLConfig('meta.zcml', component)()
+        xmlconfig(StringIO(template % (
+            '''
+            <interface
+                interface="
+                  zope.publisher.tests.test_zcml.ITestSkin"
+                type="zope.publisher.interfaces.browser.IBrowserSkinType"
+                name="Test Skin"
+                />
+            <browser:defaultSkin name="Test Skin" />
+            <view
+                for="zope.publisher.tests.test_zcml.IOb"
+                type="zope.publisher.interfaces.browser.IDefaultBrowserLayer"
+                name="test"
+                factory="zope.publisher.tests.test_zcml.V1"
+                />
+            <view
+                for="zope.publisher.tests.test_zcml.IOb"
+                type="zope.publisher.tests.test_zcml.ITestLayer"
+                name="test"
+                factory="zope.publisher.tests.test_zcml.V2"
+                />
+            '''
+            )))
+
+        # Simulate Zope Publication behavior in beforeTraversal()
+        adapters = component.getSiteManager().adapters
+        skin = adapters.lookup((providedBy(request),), IDefaultSkin, '')
+        directlyProvides(request, skin)
+
+        v = component.queryMultiAdapter((ob, request), name='test')
+        self.assertTrue(isinstance(v, V2))
+
+def test_suite():
+    return unittest.makeSuite(Test)


Property changes on: Sandbox/nadako/zope.publisher/src/zope/publisher/tests/test_zcml.py
___________________________________________________________________
Added: svn:keywords
   + Id,svn:eol-style=native

Added: Sandbox/nadako/zope.publisher/src/zope/publisher/zcml.py
===================================================================
--- Sandbox/nadako/zope.publisher/src/zope/publisher/zcml.py	                        (rev 0)
+++ Sandbox/nadako/zope.publisher/src/zope/publisher/zcml.py	2009-08-25 13:12:10 UTC (rev 103204)
@@ -0,0 +1,120 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Default view and default skin ZCML configuration feature.
+
+$Id: metaconfigure.py 103163 2009-08-24 16:22:07Z nadako $
+"""
+from zope import component
+from zope.component.interface import provideInterface
+from zope.component.zcml import handler
+from zope.configuration.fields import GlobalObject, GlobalInterface
+from zope.interface import Interface
+from zope.publisher.interfaces import IDefaultViewName
+from zope.publisher.interfaces.browser import IBrowserRequest
+from zope.publisher.interfaces.browser import IBrowserSkinType
+from zope.publisher.interfaces.browser import IDefaultSkin
+from zope.schema import TextLine
+
+
+class IDefaultSkinDirective(Interface):
+    """Sets the default browser skin"""
+
+    name = TextLine(
+        title=u"Default skin name",
+        description=u"Default skin name",
+        required=True
+        )
+
+
+class IDefaultViewDirective(Interface):
+    """
+    The name of the view that should be the default.
+
+    This name refers to view that should be the
+    view used by default (if no view name is supplied
+    explicitly).
+    """
+
+    name = TextLine(
+        title=u"The name of the view that should be the default.",
+        description=u"""
+        This name refers to view that should be the view used by
+        default (if no view name is supplied explicitly).""",
+        required=True
+        )
+
+    for_ = GlobalObject(
+        title=u"The interface this view is the default for.",
+        description=u"""Specifies the interface for which the view is
+        registered. All objects implementing this interface can make use of
+        this view. If this attribute is not specified, the view is available
+        for all objects.""",
+        required=False
+        )
+
+    layer = GlobalInterface(
+        title=u"The layer the default view is declared for",
+        description=u"The default layer for which the default view is "
+                    u"applicable. By default it is applied to all layers.",
+        required=False
+        )
+
+
+def setDefaultSkin(name, info=''):
+    """Set the default skin.
+
+    >>> from zope.interface import directlyProvides
+    >>> from zope.app.testing import ztapi
+
+    >>> class Skin1: pass
+    >>> directlyProvides(Skin1, IBrowserSkinType)
+
+    >>> ztapi.provideUtility(IBrowserSkinType, Skin1, 'Skin1')
+    >>> setDefaultSkin('Skin1')
+    >>> adapters = component.getSiteManager().adapters
+
+	Lookup the default skin for a request that has the
+
+    >>> adapters.lookup((IBrowserRequest,), IDefaultSkin, '') is Skin1
+    True
+    """
+    skin = component.getUtility(IBrowserSkinType, name)
+    handler('registerAdapter',
+            skin, (IBrowserRequest,), IDefaultSkin, '', info),
+
+
+def defaultSkin(_context, name):
+
+    _context.action(
+        discriminator = 'defaultSkin',
+        callable = setDefaultSkin,
+        args = (name, _context.info)
+        )
+
+
+def defaultView(_context, name, for_=None, layer=IBrowserRequest):
+
+    _context.action(
+        discriminator = ('defaultViewName', for_, layer, name),
+        callable = handler,
+        args = ('registerAdapter',
+                name, (for_, layer), IDefaultViewName, '', _context.info)
+        )
+
+    if for_ is not None:
+        _context.action(
+            discriminator = None,
+            callable = provideInterface,
+            args = ('', for_)
+            )


Property changes on: Sandbox/nadako/zope.publisher/src/zope/publisher/zcml.py
___________________________________________________________________
Added: svn:keywords
   + Id,svn:eol-style=native



More information about the Checkins mailing list