[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