[Zope3-dev] Re: a new zcml directive?

Philipp von Weitershausen philipp at weitershausen.de
Thu Mar 16 00:54:43 EST 2006


Martijn Faassen wrote:
> I stand by my conclusions on this approach sounding simple in theory,
> but still being a bit harder than it should be in practice. :)

I think this is pretty simple:

def makeAnnotationAdapter(for_, factory, key):
  @zope.component.adapter(for_)
  @zope.interface.implementer(IAnnotations)
  def annotationAdapter(context):
      annotations = IAnnotations(context)
      try:
          return annotations[key]
      except KeyError:
          ob = factory()
          annotations[key] = ob
          # to please security...
          zope.app.container.contained.contained(
              ob, context, 'foobar-whatever')
          return ob
  return annotationAdapter

getFoo = makeAnnotationAdapter(IFoo, Foo, FOO_KEY)


Perhaps I'm missing something?!?

Philipp


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


More information about the Zope3-dev mailing list