[Checkins] SVN: grok/branches/snowsprint-viewlets2/src/grok/ Added tests for using the grok.order() directive on viewlets.

Tim Terlegård tim.terlegard at valentinewebsystems.se
Thu Feb 28 01:47:39 EST 2008


Log message for revision 84358:
  Added tests for using the grok.order() directive on viewlets.
  

Changed:
  U   grok/branches/snowsprint-viewlets2/src/grok/components.py
  A   grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order.py
  A   grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order_templates/
  A   grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order_templates/orderview.pt

-=-
Modified: grok/branches/snowsprint-viewlets2/src/grok/components.py
===================================================================
--- grok/branches/snowsprint-viewlets2/src/grok/components.py	2008-02-28 01:46:51 UTC (rev 84357)
+++ grok/branches/snowsprint-viewlets2/src/grok/components.py	2008-02-28 06:47:36 UTC (rev 84358)
@@ -16,7 +16,6 @@
 import sys
 import os
 import persistent
-import urllib
 import datetime
 import warnings
 import pytz
@@ -634,7 +633,8 @@
             #return self.template(viewlets=self.viewlets)
             return self._render_template()
         else:
-            return u'\n'.join([viewlet.render() for viewlet in self.viewlets])
+            viewlets = util.sort_components(self.viewlets)
+            return u'\n'.join([viewlet.render() for viewlet in viewlets])
 
 
     @property

Added: grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order.py
===================================================================
--- grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order.py	                        (rev 0)
+++ grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order.py	2008-02-28 06:47:36 UTC (rev 84358)
@@ -0,0 +1,84 @@
+"""
+
+==================
+Test viewlet order
+==================
+
+If one wants the viewlets rendered in a certain order it's possible
+to use the grok.order() directive.
+
+Set up a content object in the application root::
+
+  >>> root = getRootFolder()
+  >>> root['fred'] = Fred()
+
+Traverse to the view on the model object. We get the viewlets
+registered for the default layer, with the anybody permission::
+
+  >>> from zope.testbrowser.testing import Browser
+  >>> browser = Browser()
+  >>> browser.handleErrors = False
+  >>> browser.open("http://localhost/fred/@@orderview")
+  >>> print browser.contents
+  Gold
+  Bone
+  Fred
+  Cave
+  Wilma
+  Barney
+  <BLANKLINE>
+"""
+
+import grok
+
+class Fred(grok.Model):
+    pass
+
+class OrderView(grok.View):
+    pass
+
+class CaveManager(grok.ViewletManager):
+    grok.view(OrderView)
+    grok.name('cave')
+
+class CaveViewlet(grok.Viewlet):
+    grok.order(30)
+    grok.viewletmanager(CaveManager)
+
+    def render(self):
+        return "Cave"
+
+class BarneyViewlet(grok.Viewlet):
+    grok.order(60)
+    grok.viewletmanager(CaveManager)
+
+    def render(self):
+        return "Barney"
+
+class BoneViewlet(grok.Viewlet):
+    grok.order(10)
+    grok.viewletmanager(CaveManager)
+
+    def render(self):
+        return "Bone"
+
+class WilmaViewlet(grok.Viewlet):
+    grok.order(50)
+    grok.viewletmanager(CaveManager)
+
+    def render(self):
+        return "Wilma"
+
+class GoldViewlet(grok.Viewlet):
+    grok.order(1)
+    grok.viewletmanager(CaveManager)
+
+    def render(self):
+        return "Gold"
+
+class FredViewlet(grok.Viewlet):
+    grok.order(20)
+    grok.viewletmanager(CaveManager)
+
+    def render(self):
+        return "Fred"

Added: grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order_templates/orderview.pt
===================================================================
--- grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order_templates/orderview.pt	                        (rev 0)
+++ grok/branches/snowsprint-viewlets2/src/grok/ftests/viewlet/order_templates/orderview.pt	2008-02-28 06:47:36 UTC (rev 84358)
@@ -0,0 +1 @@
+<div tal:replace="structure provider:cave" />



More information about the Checkins mailing list