[Checkins] SVN: z3ext.layout/trunk/ Use __parent__ for layout quering

Nikolay Kim fafhrd at datacom.kz
Tue Jan 20 03:50:20 EST 2009


Log message for revision 94874:
  Use __parent__ for layout quering

Changed:
  U   z3ext.layout/trunk/CHANGES.txt
  U   z3ext.layout/trunk/src/z3ext/layout/interfaces.py
  U   z3ext.layout/trunk/src/z3ext/layout/layout.py
  U   z3ext.layout/trunk/src/z3ext/layout/pagelet.py
  U   z3ext.layout/trunk/src/z3ext/layout/zcml.py

-=-
Modified: z3ext.layout/trunk/CHANGES.txt
===================================================================
--- z3ext.layout/trunk/CHANGES.txt	2009-01-20 06:07:06 UTC (rev 94873)
+++ z3ext.layout/trunk/CHANGES.txt	2009-01-20 08:50:19 UTC (rev 94874)
@@ -2,6 +2,12 @@
 CHANGES
 =======
 
+2.0.3 (2009-01-20)
+------------------
+
+- Use __parent__ for layout quering
+
+
 2.0.2 (2009-01-08)
 ------------------
 

Modified: z3ext.layout/trunk/src/z3ext/layout/interfaces.py
===================================================================
--- z3ext.layout/trunk/src/z3ext/layout/interfaces.py	2009-01-20 06:07:06 UTC (rev 94873)
+++ z3ext.layout/trunk/src/z3ext/layout/interfaces.py	2009-01-20 08:50:19 UTC (rev 94874)
@@ -23,9 +23,11 @@
     """ Layout not found exception """
 
 
-class IPagelet(IBrowserPage):
+class IPagelet(interface.Interface):
     """ pagelet """
 
+    context = interface.Attribute('Context')
+
     contexts = interface.Attribute('Additional contexts')
 
     isRedirected = interface.Attribute('is redirected')

Modified: z3ext.layout/trunk/src/z3ext/layout/layout.py
===================================================================
--- z3ext.layout/trunk/src/z3ext/layout/layout.py	2009-01-20 06:07:06 UTC (rev 94873)
+++ z3ext.layout/trunk/src/z3ext/layout/layout.py	2009-01-20 08:50:19 UTC (rev 94874)
@@ -77,7 +77,7 @@
         self.context = context
         self.request = request
 
-        self.__parent__ = view.context
+        self.__parent__ = view.__parent__
 
     def update(self):
         pass
@@ -101,14 +101,16 @@
             return self.render()
 
         if self.__name__ != self.layout:
-            layout = queryLayout(view, self.request, name=self.layout)
+            layout = queryLayout(
+                view, self.request, view.__parent__, name=self.layout)
             if layout is not None:
                 return layout(layout=self, view=view, *args, **kw)
         else:
-            if layoutview.context is not self.context.__parent__:
-                context = self.context.__parent__
+            context = self.context
+            if layoutview.context is not context.__parent__:
+                context = context.__parent__
             else:
-                context = getattr(self.context.__parent__, '__parent__')
+                context = getattr(context.__parent__, '__parent__', None)
 
             layout = queryLayout(self, self.request, context, name=self.layout)
             if layout is not None:

Modified: z3ext.layout/trunk/src/z3ext/layout/pagelet.py
===================================================================
--- z3ext.layout/trunk/src/z3ext/layout/pagelet.py	2009-01-20 06:07:06 UTC (rev 94873)
+++ z3ext.layout/trunk/src/z3ext/layout/pagelet.py	2009-01-20 08:50:19 UTC (rev 94874)
@@ -67,6 +67,8 @@
         for idx in range(len(args)):
             setattr(self, 'context%s'%idx, args[idx])
 
+        self.__parent__ = context
+
     def update(self):
         pass
 
@@ -86,7 +88,8 @@
         if self.isRedirected or self.request.response.getStatus() in (302, 303):
             return u''
 
-        layout = queryLayout(self, self.request, name=self.layoutname)
+        layout = queryLayout(
+            self, self.request, self.__parent__, name=self.layoutname)
         if layout is None:
             return self.render()
         else:

Modified: z3ext.layout/trunk/src/z3ext/layout/zcml.py
===================================================================
--- z3ext.layout/trunk/src/z3ext/layout/zcml.py	2009-01-20 06:07:06 UTC (rev 94873)
+++ z3ext.layout/trunk/src/z3ext/layout/zcml.py	2009-01-20 08:50:19 UTC (rev 94874)
@@ -26,6 +26,7 @@
 from zope.configuration.fields import Path, Tokens, GlobalObject, GlobalInterface
 from zope.configuration.exceptions import ConfigurationError
 from zope.publisher.interfaces import IPublishTraverse
+from zope.publisher.interfaces.browser import IBrowserPage
 from zope.publisher.interfaces.browser import IBrowserPublisher
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 from zope.app.component.metadirectives import IBasicViewInformation
@@ -373,9 +374,9 @@
 
     # prepare allowed interfaces and attributes
     allowed_interface.extend(provides)
+    allowed_interface.append(IBrowserPage)
     allowed_attributes.extend(kwargs.keys())
-    allowed_attributes.extend(('__call__', 'browserDefault',
-                               'update', 'render', 'publishTraverse'))
+    allowed_attributes.extend(('__call__', 'browserDefault', 'publishTraverse'))
 
     # Set up permission mapping for various accessible attributes
     _handle_allowed_interface(



More information about the Checkins mailing list