[Zope-dev] Acquisition Filtered Folder stuff
Dieter Maurer
dieter@handshake.de
Tue, 12 Jun 2001 22:04:28 +0200 (CEST)
Chris Withers writes:
> Dieter Maurer wrote:
> > You may be successful, if you override "__of__".
> > It is this method that (usually) builds the acquisition wrapper.
>
> When does it not build the wrapper?
If it is not the "__of__" defined by "Acquisition.{Im,Ex}plicit",
it may not build acquisition wrappers.
E.g. the "__of__" of "ComputedAttribute" does not.
> > The easiest way, of course, is to derive the class from
> > "Acquisition.Explicit" with higher priority (more to the left)
> > than from "Acquisition.Implicit".
>
> Hmmm... then maybe use the acquire() method to get hold of names that can be
> acquired, in the __getattr__ method?
Read the "Acquisition" documentation:
With explicit acquisition, you can declare that some attributes
should be acquired implicitly.
Of course, you can do it in "__getattr__", too.
> There is a more fundamental problem here though; If you limit acquisition to a
> specified list of names, what do you do about all the stuff Zope normally
> silently acquires, like the security context, the REQUEST, etc?
I expect, that the security context is explicitly acquired
(not sure).
For "REQUEST" and some essential other objects, you can declare
them to be implicitly acquired.
> It would be great if you could make it work along the lines of "acquire all the
> Zope internal stuff, but beyond that, only acquire if the name is in this list".
> But how would we define "all the Zope internal stuff" and how would we implement
> the logic?
The first question may have some surprises. The second should not be too
difficult.
> Hurm... this sounds like a problem of Fultonesque proportions :-S
Maybe, we wait a bit. As I heard, DC is thinking about making
acquisition explicit rathen than implicit.
Dieter