[Grok-dev] function as named adapter: how?
Jan-Wijbrand Kolman
janwijbrand at gmail.com
Thu Apr 16 04:20:37 EDT 2009
Jeroen Michiel wrote:
> I want to make an named adapter, but it has to be a function.
> How do I do that in Grok?
> grok.name() can only be used on classes, and apparently, grok.adapter only
> accepts interfaces and no name='bla' params...
This work for me, but this feature has only recently been added..:
from zope.interface import Interface
class IMyInterface(Interface):
pass
@grok.adapter(Interface, name='named')
@grok.implementer(IMyInterface)
def adaptation(context):
print 'adapting', repr(context)
return 'foobar' # not too return None here
>>> import grok
>>> class MyModel(grok.Model):
... pass
>>> ctxt = MyModel()
>>> from zope.component import getAdapter
>>> adpt = getAdapter(ctxt, interface=IMyInterface, name='named')
adapting <MyModel object at ...>
>>> adpt2 = getAdapter(ctxt, interface=IMyInterface)
Traceback (most recent call last):
...
<InterfaceClass ...IMyInterface>, u'')
Is this what you looked for?
regards,
jw
More information about the Grok-dev
mailing list