[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