[Checkins] SVN: grok/trunk/src/grok/ named adapter support
Philipp von Weitershausen
philikon at philikon.de
Sun Oct 15 09:58:18 EDT 2006
Log message for revision 70649:
named adapter support
Changed:
U grok/trunk/src/grok/_grok.py
A grok/trunk/src/grok/tests/adapter/namedadapter.py
-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py 2006-10-15 13:50:45 UTC (rev 70648)
+++ grok/trunk/src/grok/_grok.py 2006-10-15 13:58:17 UTC (rev 70649)
@@ -80,7 +80,8 @@
for factory in adapters:
adapter_context = determineContext(factory, context)
- component.provideAdapter(factory, adapts=(adapter_context,))
+ name = getattr(factory, '__grok_name__', '')
+ component.provideAdapter(factory, adapts=(adapter_context,), name=name)
for factory in views:
view_context = determineContext(factory, context)
Added: grok/trunk/src/grok/tests/adapter/namedadapter.py
===================================================================
--- grok/trunk/src/grok/tests/adapter/namedadapter.py 2006-10-15 13:50:45 UTC (rev 70648)
+++ grok/trunk/src/grok/tests/adapter/namedadapter.py 2006-10-15 13:58:17 UTC (rev 70649)
@@ -0,0 +1,31 @@
+"""
+You can register a named adapter by using grok.name:
+
+ >>> grok.grok(__name__)
+
+ >>> cave = Cave()
+ >>> home = IHome(cave)
+ Traceback (most recent call last):
+ ...
+ TypeError: ('Could not adapt', <grok.tests.adapter.namedadapter.Cave object at 0x...>, <InterfaceClass grok.tests.adapter.namedadapter.IHome>)
+
+ >>> from zope.component import getAdapter
+ >>> home = getAdapter(cave, IHome, name='home')
+ >>> IHome.providedBy(home)
+ True
+ >>> isinstance(home, Home)
+ True
+"""
+
+import grok
+from zope import interface
+
+class Cave(grok.Model):
+ pass
+
+class IHome(interface.Interface):
+ pass
+
+class Home(grok.Adapter):
+ grok.implements(IHome)
+ grok.name('home')
Property changes on: grok/trunk/src/grok/tests/adapter/namedadapter.py
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list