[Checkins] SVN: grokcore.viewlet/trunk/ add the available() method on viewlets, check for by the viewlet manager

Jan-Wijbrand Kolman janwijbrand at gmail.com
Mon Jun 27 06:24:34 EDT 2011


Log message for revision 121985:
  add the available() method on viewlets, check for by the viewlet manager

Changed:
  U   grokcore.viewlet/trunk/CHANGES.txt
  U   grokcore.viewlet/trunk/src/grokcore/viewlet/components.py
  U   grokcore.viewlet/trunk/src/grokcore/viewlet/ftesting.zcml
  A   grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/
  A   grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/bonesview.pt
  D   grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/caveview.pt

-=-
Modified: grokcore.viewlet/trunk/CHANGES.txt
===================================================================
--- grokcore.viewlet/trunk/CHANGES.txt	2011-06-27 09:11:02 UTC (rev 121984)
+++ grokcore.viewlet/trunk/CHANGES.txt	2011-06-27 10:24:32 UTC (rev 121985)
@@ -4,9 +4,11 @@
 1.9 (unreleased)
 ----------------
 
-- Nothing changed yet.
+- Introduce the `available()` method on viewlet component. The viewlet
+  manager will filter out unavailable viewlet by calling this method. The
+  `available()` method is called *after* the viewlet's `update()` is called,
+  but *before* the `render()` is called.
 
-
 1.8 (2010-12-16)
 ----------------
 

Modified: grokcore.viewlet/trunk/src/grokcore/viewlet/components.py
===================================================================
--- grokcore.viewlet/trunk/src/grokcore/viewlet/components.py	2011-06-27 09:11:02 UTC (rev 121984)
+++ grokcore.viewlet/trunk/src/grokcore/viewlet/components.py	2011-06-27 10:24:32 UTC (rev 121985)
@@ -73,6 +73,12 @@
     def namespace(self):
         return {}
 
+    def update(self):
+        super(ViewletManager, self).update()
+        # Filter out the unavailable viewlets *after* the viewlet's update()
+        # has been called.
+        self.viewlets = filter(lambda v: v.available(), self.viewlets)
+
     def render(self):
         """See zope.contentprovider.interfaces.IContentProvider"""
         # Now render the view
@@ -115,5 +121,13 @@
     def update(self):
         pass
 
+    def available(self):
+        """Return True if this viewlet is to be rendered. False otherwise.
+
+        Note that the available() method is called *after* update() but
+        *before* render() but has been called.
+        """
+        return True
+
     def render(self):
         return self.template.render(self)

Modified: grokcore.viewlet/trunk/src/grokcore/viewlet/ftesting.zcml
===================================================================
--- grokcore.viewlet/trunk/src/grokcore/viewlet/ftesting.zcml	2011-06-27 09:11:02 UTC (rev 121984)
+++ grokcore.viewlet/trunk/src/grokcore/viewlet/ftesting.zcml	2011-06-27 10:24:32 UTC (rev 121985)
@@ -25,6 +25,7 @@
   <include package="zope.annotation" />
   <include package="zope.principalregistry" />
   <include package="zope.contentprovider" />
+  <include package="zope.publisher" />
   <include package="zope.app.appsetup" />
   <include package="zope.app.publication" />
   <include package="grokcore.viewlet" />

Copied: grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/bonesview.pt (from rev 121984, grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_security_templates/caveview.pt)
===================================================================
--- grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/bonesview.pt	                        (rev 0)
+++ grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/bonesview.pt	2011-06-27 10:24:32 UTC (rev 121985)
@@ -0,0 +1 @@
+<span tal:replace="provider:bones" />

Deleted: grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/caveview.pt
===================================================================
--- grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_security_templates/caveview.pt	2011-06-27 09:11:02 UTC (rev 121984)
+++ grokcore.viewlet/trunk/src/grokcore/viewlet/ftests/viewlet/viewlet_available_templates/caveview.pt	2011-06-27 10:24:32 UTC (rev 121985)
@@ -1 +0,0 @@
-<span tal:replace="provider:pot" />



More information about the checkins mailing list