Martijn Faassen wrote:
Marius Gedminas wrote:
[snip]
Also, I'd like a way to specify the adapter name in the adapter class.
Something like

    from zope.interface import implements
    from zope.component import adapts, named

    class MyNamedAdapter(object):
        adapts(IFoo)
        implements(IBar)
        named('myname')

        def __init__(self, context):
            self.context

Also I'd like to have a zope.component.Adapter class that defines

        def __init__(self, context):
            self.context

and does nothing else.  It seems to me that 95% of all adapters have an
__init__ like this.  It is tiring to keep repeating it.

Also, I want a pony.  Ok, not really.

You can have your pony. In grok, there's a grok.Adapter class, which
does the thing in init, where you can specify the name using grok.name, and which causes registration as an adapter without the need for ZCML.


E.g.:


import grok
from zope.index.text.interfaces import ISearchableText

class Page(grok.Model):

    def __init__(self, text):
        self.text = text

class SearchableTextForPage(grok.Adapter):
    grok.implements(ISearchableText)
    grok.context(Page) # automatically assumed = the default
    grok.name('')      # the default

    def getSearchableText(self):
        # self.context is set by grok.Adapter.__init__
        return self.context.text



--
http://worldcookery.com -- Professional Zope documentation and training
Next Zope 3 training at Camp5: http://trizpug.org/boot-camp/camp5
_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to