[Zope3-dev] Re: View permissions

Philipp von Weitershausen philipp at weitershausen.de
Tue Jan 30 08:46:42 EST 2007


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


More information about the Zope3-dev mailing list