[Checkins] SVN: grokcore.layout/trunk/src/grokcore/layout/ Add an use new directive layout to select a different layout type on a page.

Sylvain Viollow cvs-admin at zope.org
Mon Apr 30 08:55:56 UTC 2012


Log message for revision 125431:
  Add an use new directive layout to select a different layout type on a page.
  

Changed:
  U   grokcore.layout/trunk/src/grokcore/layout/__init__.py
  U   grokcore.layout/trunk/src/grokcore/layout/components.py
  U   grokcore.layout/trunk/src/grokcore/layout/interfaces.py

-=-
Modified: grokcore.layout/trunk/src/grokcore/layout/__init__.py
===================================================================
--- grokcore.layout/trunk/src/grokcore/layout/__init__.py	2012-04-30 08:54:59 UTC (rev 125430)
+++ grokcore.layout/trunk/src/grokcore/layout/__init__.py	2012-04-30 08:55:52 UTC (rev 125431)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 from grokcore.layout.interfaces import ILayout, IPage
-from grokcore.layout.components import Layout, Page, FormPage
+from grokcore.layout.components import Layout, layout, Page, FormPage
 from grokcore.layout.components import AddFormPage, EditFormPage, DisplayFormPage
 from grokcore.layout.components import UnauthorizedPage, NotFoundPage
 from grokcore.layout.components import ExceptionPage

Modified: grokcore.layout/trunk/src/grokcore/layout/components.py
===================================================================
--- grokcore.layout/trunk/src/grokcore/layout/components.py	2012-04-30 08:54:59 UTC (rev 125430)
+++ grokcore.layout/trunk/src/grokcore/layout/components.py	2012-04-30 08:55:52 UTC (rev 125431)
@@ -4,6 +4,7 @@
 from zope.interface import Interface
 from zope.publisher.publish import mapply
 
+import martian
 import grokcore.component as grok
 import grokcore.formlib
 import grokcore.view
@@ -14,6 +15,12 @@
 import zope.security.interfaces
 
 
+class layout(martian.Directive):
+     scope = martian.CLASS_OR_MODULE
+     store = martian.ONCE
+     default = ILayout
+
+
 class Layout(grokcore.view.ViewSupport):
     """A layout object.
     """
@@ -71,8 +78,9 @@
     layout = None
 
     def __call__(self):
+        wanted = layout.bind().get(self)
         self.layout = zope.component.getMultiAdapter(
-            (self.request, self.context), ILayout)
+            (self.request, self.context), wanted)
         mapply(self.update, (), self.request)
         if self.request.response.getStatus() in (302, 303):
             # A redirect was triggered somewhere in update().  Don't

Modified: grokcore.layout/trunk/src/grokcore/layout/interfaces.py
===================================================================
--- grokcore.layout/trunk/src/grokcore/layout/interfaces.py	2012-04-30 08:54:59 UTC (rev 125430)
+++ grokcore.layout/trunk/src/grokcore/layout/interfaces.py	2012-04-30 08:55:52 UTC (rev 125431)
@@ -42,3 +42,4 @@
 class IGrokcoreLayoutAPI(IBaseClasses):
     """Grokcore layout API.
     """
+    layout = Attribute("Directive used to specify layout on a page.")



More information about the checkins mailing list