[Checkins] SVN: grok/branches/snowsprint-viewlets/src/grok/ Added the __name__ attribute to viewlets and viewlet managers. __name__ gets its value from the grok.name() directive primarily, but if it's not there it will get the lowercased name of the class.

Tim Terlegård tim.terlegard at valentinewebsystems.se
Wed Jan 23 12:24:49 EST 2008


Log message for revision 83115:
  Added the __name__ attribute to viewlets and viewlet managers. __name__ gets its value from the grok.name() directive primarily, but if it's not there it will get the lowercased name of the class.
  

Changed:
  U   grok/branches/snowsprint-viewlets/src/grok/components.py
  U   grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet_security.py

-=-
Modified: grok/branches/snowsprint-viewlets/src/grok/components.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/components.py	2008-01-23 16:11:36 UTC (rev 83114)
+++ grok/branches/snowsprint-viewlets/src/grok/components.py	2008-01-23 17:24:48 UTC (rev 83115)
@@ -617,6 +617,9 @@
 
     def __init__(self, context, request, view):
         super(ViewletManager, self).__init__(context, request, view)
+        self.__name__ = util.class_annotation(self.__class__,
+                                              'grok.name',
+                                              self.__class__.__name__.lower())
         self.static = component.queryAdapter(
             self.request,
             interface.Interface,
@@ -676,6 +679,9 @@
 
     def __init__(self, context, request, view, manager):
         super(Viewlet, self).__init__(context, request, view, manager)
+        self.__name__ = util.class_annotation(self.__class__,
+                                             'grok.name',
+                                              self.__class__.__name__.lower())
         self.static = component.queryAdapter(
             self.request,
             interface.Interface,

Modified: grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet_security.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet_security.py	2008-01-23 16:11:36 UTC (rev 83114)
+++ grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet_security.py	2008-01-23 17:24:48 UTC (rev 83115)
@@ -70,7 +70,35 @@
   Man Bone
   T-Rex Bone
 
+Viewlets and viewlet managers should have a __name__. It's used
+for instance when looking up the absolute url for the viewlet
+or manager.
 
+  >>> from zope.publisher.browser import TestRequest
+  >>> request = TestRequest()
+  >>> model = CaveWoman()
+  >>> view = CaveView(model, request)
+
+Managers and viewlets should get their  name from the class name
+if grok.name() is not present.
+
+  >>> manager = Pot(model, request, view)
+  >>> manager.__name__
+  'pot'
+  >>> viewlet = BrackerBone(model, request, view, manager)
+  >>> viewlet.__name__
+  'brackerbone'
+
+If grok.name() is specified for manager and viewlet they should
+get those names.
+
+  >>> manager = NamedViewletManager(model, request, view)
+  >>> manager.__name__
+  'managerwithname'
+  >>> viewlet = NamedViewlet(model, request, view, manager)
+  >>> viewlet.__name__
+  'viewletwithname'
+
 """
 
 
@@ -154,3 +182,12 @@
 
 class BoneSkin(grok.Skin):
     grok.layer(IBoneLayer)
+
+class NamedViewletManager(grok.ViewletManager):
+    grok.context(Interface)
+    grok.name('managerwithname')
+
+class NamedViewlet(grok.Viewlet):
+    grok.context(Interface)
+    grok.name('viewletwithname')
+    grok.viewletmanager(NamedViewletManager)



More information about the Checkins mailing list